How can I use LINQ to populate a collection inside a class?

I have the following:

foreach (string applicationName in applicationNames) { _uow.Applications.Add( new Application { Name = applicationName, ModifiedDate = DateTime.Now, TestAccounts = (from testAccountName in testAccountNames select new TestAccount { Name = testAccountName , ModifiedDate = DateTime.Now }) }); } 

The problem is that it gives me an error in the VS2012 IDE when choosing. It says here:

 Error 3 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<Relational.Models.TestAccount>' to 'System.Collections.Generic.ICollection<Relational.Models.TestAccount>'. An explicit conversion exists (are you missing a cast? 

Here is the application class:

 public partial class Application { public Application() { this.TestAccounts = new List<TestAccount>(); } public int ApplicationId { get; set; } public string Name { get; set; } public virtual byte[] Version { get; set; } public System.DateTime ModifiedDate { get; set; } public virtual ICollection<TestAccount> TestAccounts { get; set; } } 
+4
source share
2 answers

Use ToList :

  foreach (string applicationName in applicationNames) { _uow.Applications.Add( new Application { Name = applicationName, ModifiedDate = DateTime.Now, TestAccounts = (from testAccountName in testAccountNames select new TestAccount { Name = testAccountName , ModifiedDate = DateTime.Now }).ToList() }); } 
+5
source

You need the cast of IList<TestAccount> .

  { Name = applicationName, ModifiedDate = DateTime.Now, TestAccounts = (from testAccountName in testAccountNames select new TestAccount { Name = testAccountName , ModifiedDate = DateTime.Now }).ToList() // <-- try this }); 
+1
source

All Articles