我正在使用LINQ对一些数据进行排序,但我有零个或多个OrderBy子句要应用。
因为我不知道我有多少个order子句,所以我不能这样做:
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);
}显然这是没有希望的,所以任何想法都会非常感谢。
发布于 2011-08-17 00:03:54
为什么它不能与foreach一起工作?您只需要处理first order子句的特殊情况:
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>>>。
https://stackoverflow.com/questions/7081188
复制相似问题