2017-05-25 7 views
-1

私は次のクラスがあります。巣のforeachサイクルとLINQメソッドにコレクションに項目を追加

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

そして、私はforeachに新しいコレクションに項目を追加:

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

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

を私は人々のリストを持っていますループ:

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 }); 
} 

ネストすることは可能ですforeachlinqメソッドに項目を追加する?

+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

関連する問題