动态创建OrderBy参数

时间:2011-02-04 23:21:58

标签: c# linq sorting ienumerable

  

可能重复:
  Dynamic LINQ OrderBy

您好, 我有IEnumerable个数据类。我想根据用户选择对此集合进行排序。如何编写一个通用函数,它将对字段名称进行排序&会返回第IEnumerable.OrderBy(f => f.fieldName)行吗?

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

您可以轻松实现这一目标。假设我们有一个名为Item的对象(类):

public class Item
{
    public string Name { get; set; }
    public string Description { get; set; }
    public string Name2 { get; set; }
}

这是数据收集的一个例子

var items = new List<Item>
                {
                    new Item {Name = "Test 1", Description = "Description 1"},
                    new Item {Name = "Test 2", Description = "Description 2"}
                };

使用switch条件,如

IOrderedEnumerable<Item> orderedItems;
switch (selection)
{
    case 1:
        orderedItems = items.OrderBy(i => i.Name);
        break;
    case 2:
        orderedItems = items.OrderBy(i => i.Description);
        break;
    default:
        orderedItems = items.OrderBy(i => i.Name2);
        break;
}