&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
            //
}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS