具有动态排序依据的 LINQ 查询 - 多个字段

本文关键字:查询 字段 LINQ 动态 排序 | 更新日期: 2023-09-27 18:32:35

>我有一个以名称,日期,类别作为参数的集合。我想根据动态变化的三个输入顺序对列表进行排序。例如:在一种情况下,我必须分别对订单日期,名称,类别进行排序。在另一种情况下,顺序是名称、日期和类别。所以我可以拥有所有的排列和组合。有人可以帮助我采用通用的方式来实现它。

具有动态排序依据的 LINQ 查询 - 多个字段

LINQ 已经允许您通过在 OrderBy 之后添加 Queryable.ThenBy、QueryableThenByDescending、Enumerable.ThenBy 或 Enumerable.ThenByDescending 函数来使用多个字段进行排序。

在 LINQ 中选中多个"排序依据",了解类似的问题和讨论。

顺便说一句,如果您需要 Enumerable 未提供的稀有方法,只需在其上调用 AsQueryable,即可将 Enumerable 转换为 Queryable。

我还在这里找到了他可能喜欢的东西:http://www.codeproject.com/Articles/27834/Generic-List-Sort-Function <-希望它有帮助,它按任何输入属性排序。该属性是通过反射获得的。

下面是一个例子

// Just to get IOrderedEnumerable from the collection
// And set the default order
var orderedItems = context.Items.OrderBy(i => i.Name);
var orderByString = txtOrderBy.Text.ToLower();
switch(orderByString)
{
    case "category":
        orderedItems = orderedItems.OrderBy(i => i.Category);
        break;
    case "date":
        orderedItems = orderedItems.OrderBy(i => i.Date);
        break;
    default:
        break;
}