4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【C#】【文法】LINQ

Last updated at Posted at 2019-10-03

・Langage INtegrated Queryの略
統合開発クエリ。

・下記例ではコレクションに対してしか行っていないが、
データベースやXML文書に対しても統一的な記載ができるらしい。

・foreachで扱えるクラスであれば(=IEnumerableでイテレータの使用が可能であれば)
 LINQは使用可能。

・下記以外にも様々なメソッドが用意されている。(集合の和,積など)

・WhereとFindAllの違い
⇒ WhereはIEnumerableを実装していれば使える。
 ⇒ FindAllはList型にのみ存在する。内部的にはおそらく.Where().toList()の
   ようにしているため実質Whereと同じと考えてよい。

   // LINQ
    // 簡単に言うとforeachの強化版
    // データ集合に対しての検索や集約を簡潔に記述できる。
    // javaのstreamと同様。
    class Practice10_2
    {
        static void Main(string[] args)
        {
            var intList = new List<int> { 5, 1, 3, 4, 2, 1, -1, -3};
            IEnumerable<int> iIte;
            
            // Where (3以下の値を取り出す)
            iIte = intList.Where(s => s <= 3);
            Show(iIte);

            // Select (データを加工する)
            iIte = intList.Select(s => s * s);
            Show(iIte);

            // Distinct (重複削除)
            iIte = intList.Distinct();
            Show(iIte);

            // Order By (並び替え 昇順降順)
            iIte = intList.OrderBy(s => Math.Abs(s));
            iIte = intList.OrderByDescending(s => Math.Abs(s));
            Show(iIte);

            // 全てを複合できる。
            // 実行順序は上からになる。
            iIte = intList
                .Distinct()
                .Where(s => s <= 3)
                .OrderByDescending(s => Math.Abs(s))
                .Select(s => s * s);
            Show(iIte);



            // Sum 合計値
            int sum = intList.Sum();
            // Average 平均値
            double ave = intList.Average();
            // Count 要素数
            int count = intList.Count();
            // Max 最大値
            int max = intList.Max();
            // Min 最小値
            int min = intList.Min();

            Console.Write("合計値: " + sum + " 平均値: " + ave + " 要素数 : " + count + " 最大値 : " + max + " 最小値 :" + min);
        }

        static void Show(IEnumerable<int> itereator) 
        {
            foreach(int i in itereator)
            {
                Console.Write(i);
                Console.Write(" , ");
            }
            Console.WriteLine();
        }
    }
4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?