Как обработать неизвестное количество заказов в LINQ2SQL - PullRequest
1 голос
/ 16 августа 2011

Я использую LINQ, чтобы упорядочить некоторые данные, но у меня есть ноль или более OrderBy предложений для применения.

Поскольку я не знаю, сколько у меня предложений порядка, я не могу сделать:

var myItems = dataContext.MyItems
    .OrderBy(i => i.ColumnA)
    .ThenBy(i => i.ColumnB)
    .ThenBy(i => i.ColumnC)
    .ThenBy(i => i.ColumnD)
    // etc.

Логически мне нужно что-то вроде:

var myItems = dataContext.MyItems;
foreach (var orderClause in myOrderClauses)
{
    myItems = myItems.SubOrderMagicallyBy(orderClause);
}

Очевидно, что это безнадежно, поэтому любые идеи будут высоко оценены.

1 Ответ

1 голос
/ 16 августа 2011

Почему он не работает с foreach?Вам просто нужно обработать специальный случай предложения первого порядка:

IQueryable<MyItem> myItems = dataContext.MyItems;
bool first=true;
foreach (var orderClause in myOrderClauses)
{
    if(first)
    {
        myItems = myItems.OrderBy(orderClause);
        first = false;
    }
    else
        myItems = myItems.ThenBy(orderClause);
}

Это предполагает, что myOrderClauses имеет тип IEnumerable<Expression<Func<TSource, TKey>>>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...