开发者

How to handle an unknown number of Orders in LINQ2SQL

开发者 https://www.devze.com 2023-03-28 17:10 出处:网络
I\'m using LINQ to order some data, but I have zero or more OrderBy开发者_StackOverflow clauses to apply.

I'm using LINQ to order some data, but I have zero or more OrderBy开发者_StackOverflow clauses to apply.

As I don't know how many order clauses I have, I cannot do:

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

Logically, I need something like:

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

Obviously this is hopeless, so any ideas would be greatly appreciated.


Why doesn't it work with the foreach? You just need to handle the special case of the first order clause:

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);
}

This assumes, that myOrderClauses is of type IEnumerable<Expression<Func<TSource, TKey>>>.

0

精彩评论

暂无评论...
验证码 换一张
取 消