扩展方法和lambda表达式

时间:2017-09-02 17:16:50

标签: c# lambda spreadsheetlight

我正在使用spreadsheetlight库来访问excel文件。

如何通过扩展方法和lambda表达式缩短以下构造?我想用布尔值计算所有单元格。

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++;
        }
    }
}

1 个答案:

答案 0 :(得分:4)

您可以使用LINQ:

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

SelectMany(x => x.Values)之后,我们会创建另一个IEnumerable来枚举所有SLCell Cell个。{/ p>

然后Count(x => x.DataType == CellValues.Boolean)计算.DataTypeCellValues.Boolean的单元格数。