【问题标题】:Creating OrderBy parameter dynamically [duplicate]动态创建 OrderBy 参数
【发布时间】:2011-02-04 23:21:57
【问题描述】:

可能重复:
Dynamic LINQ OrderBy

嗨, 我有一个数据类的IEnumerable。我想根据用户选择对这个集合进行排序。我如何编写一个通用函数来对字段名称进行排序并返回 IEnumerable.OrderBy(f => f.fieldName) 行?

【问题讨论】:

    标签: c# linq sorting ienumerable


    【解决方案1】:
    【解决方案2】:

    您可以轻松实现这一目标。假设我们有一个名为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;
    }
    

    【讨论】:

    • 这个解决方案显然不是 OP 要求的。
    • 哎呀,你是对的,我不认为你需要一种方法来通过将参数作为字符串传递来进行排序,所以动态 linq 是像上面提到的那些人一样的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 2021-07-11
    • 2017-06-09
    相关资源
    最近更新 更多