&tag(LINQtoObjects); *目次 [#y32d9f90] #contents *参考情報 [#hb7deef0] -[[LINQ to Objects:http://msdn.microsoft.com/ja-jp/library/bb397919.aspx]] -[[よくあるコーディングパターンと LINQ to Objects の対応付け - ぐるぐる〜:http://d.hatena.ne.jp/bleis-tift/20110210/1297310411]]…ぱっと探したい時にわかりやすい。 *簡単なサンプル [#t5878f41] **最初の要素を検索 [#d9c82fa2] -例外を発生させない場合FirstOrDefaultを使う。条件を指定することもできる items.FirstOrDefault(x => x.Age == 10); -Whereで条件を指定したあとFirstOrDefaultしても同じ。[[C# Linq Where(expression).FirstorDefault() vs .FirstOrDefault(expression) - Stack Overflow:http://stackoverflow.com/questions/8059285/c-sharp-linq-whereexpression-firstordefault-vs-firstordefaultexpression]]。 **要素が存在するかどうかを確認 [#x1a39187] -Anyを使う items.Any(x => x.Age == 10); **要素を変換する [#xb8e24e5] -Select().ToList()を使う。 List<int> ages = items.Select(x => x.Age).ToList(); **要素のメソッド呼び出し [#kbf34fc5] -あるオブジェクトのメソッドを全部呼び出したい場合、List<T>ならばForEachが使える。[[.NET(C#)のLINQについての質問です。 List<T>にはForEachメソッドがありますが、IE... - Yahoo!知恵袋:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1499143584]]。 -あるオブジェクトのメソッドを全部呼び出したい場合、List<T>ならばForEachが使える。[[.NET(C#)のLINQについての質問です。 List<T>にはForEachメソッドがありますが、IE... - Yahoo!知恵袋:http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1499143584]]。[[linq - call a function for each value in a generic c# collection - Stack Overflow:http://stackoverflow.com/questions/1883920/call-a-function-for-each-value-in-a-generic-c-sharp-collection]] items.ForEach(x => x.Method); -戻り値があるなら、Select(x = x.Value)みたいなのでもいけるかもしれないけど、Lazy Loadingが発生するので注意が必要。 **条件にあうものを抽出(古) [#h69fdeab] -データのクラス #pre{{ public class Person { public string Name { get; set; } public int Age { get; set; } public override string ToString() { return Name + " " + Age; } } }} -Listから15歳より大きいものを抽出。 #pre{{ List<Person> persons = new List<Person>(); persons.Add(new Person() { Name = "Ken", Age = 30 }); persons.Add(new Person() { Name = "Tom", Age = 10 }); persons.Add(new Person() { Name = "Mike", Age = 20 }); persons.Add(new Person() { Name = "Joe", Age = 30 }); var results = from Person person in persons where person.Age > 15 select person; foreach (Person person in results) { Debug.WriteLine(person); } //Mike 20 //Joe 30 // }}