2017-05-25 57 views
-1

我有以下類別:巢的foreach循環,將項目添加到收藏到LINQ方法

class Person 
{ 
    public string Name { get; set; } 
} 

class Student 
{ 
    public string Name { get; set; } 
} 

我的人員名單:

IList<Person> persons = new List<Person> 
{ 
    new Person() { Name = "Bill" }, 
    new Person() { Name = "Bob" }, 
    new Person() { Name = "Henry" }, 
}; 

我在foreach將項目添加到新的集合loop:

IList<Student> students = new List<Student>(); 
//Is it possible to nest the following rows in linq method? 
foreach (var person in persons) 
{ 
    students.Add(new Student() { Name = person.Name }); 
} 

是否可以嵌套foreach並添加項目到linq方法?

+0

@downvoter downvote是什麼原因?這真的很有趣。謝謝你的回覆。 – StepUp

+2

經常會問到類似的問題。 LINQ不是用於處理數據,而是查詢/轉換數據。 'Add'是一個'void'函數,這意味着沒有結果會傳遞給下一個操作/結果。 – NetMage

回答

3

如果你的意思是用LINQ查詢(不明白爲什麼你在談論築巢在你的問題環路)更換foreach循環,那麼你可以試試這個:

IList<Student> students = persons.Select(p => new Student { Name = p.Name }).ToList(); 

或者如果你喜歡:

IList<Student> students = (from p in persons select new Student { Name = p.Name }).ToList(); 
+0

你也可以這樣做:persons.ToList().ForEach(item => students.Add(new Student(){Name = item.Name})); – RMH

+3

@RafaelMansurHaddad這只是嚴重的糟糕。爲什麼你會這樣做呢? – Servy

相關問題