var sortQ = filterQ; // <--- update
if (iSortingCols > 0)
{
sortQ = (sortDirs[0] == "asc") ?
sortQ.OrderBy((d) => d.GetColumnData()[sortCols[0]]) :
sortQ.OrderByDescending((d) => d.GetColumnData()[sortCols[0]]);
if (iSortingCols > 1)
{
for (int i = 1; i < iSortingCols; i++)
{
sortQ = (sortDirs[i] == "asc") ?
sortQ.ThenBy(d => d.GetColumnData()[sortCols[i]]) :
sortQ.ThenByDescending(d => d.GetColumnData()[sortCols[i]]);
}
}
}
Компилятор подчеркивает два результата тройного оператора внутри для цикла, говоря, что IEnumerable < ...> не имеет перегрузки метода под названием ThenBy (и аналогично для ThenByDescending), но sortQ будет IOrderedEnumerable < ...> в этом блоке. Почему выбор типа C# не подходит?Тип вывода с операторами управления
Update: для тех, кто мог бы спутать до того, что я оставил из оригинального фрагмента кода, что я назначая sortQ в результате другого запроса, который заставил тип логического вывода к типу sortQ как IEnumerable < ..>, что, конечно же, то, что прикручивало мой пример. Ниже приведен ответ. Благодаря @Marc для чтения между строками.
Doh! Ты прав. Я даже не думал о предыдущем назначении sortQ. Хороший звонок. –