Методы расширения и лямбда-выражения

Я использую библиотеку 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 Cells.

Тогда Count(x => x.DataType == CellValues.Boolean) подсчитывает количество клеток, в которых .DataType является CellValues.Boolean,

Другие вопросы по тегам