我正在使用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++;
}
}
}
答案 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)
计算.DataType
为CellValues.Boolean
的单元格数。