C#:Tips:LINQでの条件設定(Where拡張メソッド)

LINQで条件設定:Where拡張メソッドを使用



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
public static void m_Where拡張メソッド()
{
    // 1::10
    IEnumerable<int> ilList = Enumerable.Range(1, 10);
    Console.Write("List: ");
    var ilBuf = ilList.ToList();
    for (int i = 0; i < ilBuf.Count(); i++)
    {
        Console.Write("[{0}]{1} ", i, ilBuf[i]);
         
    }
    Console.WriteLine();
 
    //============================================
    // 偶数リスト(各要素で2の余剰が0のものを抽出)
    //============================================
    ilResult = ilList.Where(n => n % 2 == 0);
    Console.Write("偶数値: ");
    ilResult.ToList().ForEach(n => Console.Write("{0} ", n));
    Console.WriteLine();
 
    //============================================
    // 偶数リストを合計
    //============================================
    var iResult = ilList.Where(n => n % 2 == 0).Sum();
    Console.Write("偶数の合計:{0} ", iResult);
    Console.WriteLine();
 
    //============================================
    // Nullを除いた、最大・最小
    //============================================
    int?[] iaNumbers = { 1, 2, null, 3 };
 
    var vMin = iaNumbers.Where(n => n != null).Min(); Console.WriteLine("Min(nullを除く) = {0}", vMin);
    var vMax = iaNumbers.Where(n => n != null).Max(); Console.WriteLine("Max(nullを除く) = {0}", vMax);
    Console.WriteLine();
 
    //============================================
    // 偶数インデックス
    //  (コレクションの条件指定(別途説明))
    //============================================
    // where拡張メソッドのオーバーロード
    //  ARG1:対象値
    //  ARG2:インデックス
    //------------------------------------------
    var ilResult = ilList.Where((w, n) => n % 2 == 0);
    Console.Write("偶数カラム: ");
    ilResult.ToList().ForEach(n => Console.Write("{0} ", n));
    Console.WriteLine();
 
}