2017-09-02 41 views
2

私はExcelファイルにアクセスするためにスプレッドシートライトライブラリを使用しています。拡張メソッドとラムダ式

次の構文を拡張メソッドとラムダ式で短縮するにはどうすればよいですか?ブール値ですべてのセルを数えたいと思います。

Dictionary<int, Dictionary<int, SLCell>> cells = sl.GetCells(); 

int nCount = 0; 

foreach (Dictionary<int, SLCell> Value in cells.Values) 
{ 
    foreach (SLCell Cell in Value.Values) 
    { 
     if (Cell.DataType == CellValues.Boolean) 
     { 
      nCount++; 
     } 
    } 
} 

答えて

4

あなたはこのためにLINQを使用することができます。私たちはすべてのSLCell Cell秒を超える列挙別IEnumerableを作成することによりSelectMany(x => x.Values)

int ncount = cells.Values.SelectMany(x => x.Values) 
         .Count(x => x.DataType == CellValues.Boolean); 

次に、Count(x => x.DataType == CellValues.Boolean)は、.DataTypeCellValues.Booleanであるセルの数をカウントします。