Методы расширения и лямбда-выражения
Я использую библиотеку SpreadsheetLight для доступа к файлам 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++;
}
}
}
1 ответ
Вы можете использовать LINQ для этого:
int ncount = cells.Values.SelectMany(x => x.Values)
.Count(x => x.DataType == CellValues.Boolean);
От SelectMany(x => x.Values)
мы создаем другое IEnumerable
который перечисляет все SLCell Cell
s.
Тогда Count(x => x.DataType == CellValues.Boolean)
подсчитывает количество клеток, в которых .DataType
является CellValues.Boolean
,