【问题标题】:How to sort List<object>?如何对 List<object> 进行排序?
【发布时间】:2020-06-03 14:23:57
【问题描述】:

我有一个如下列表:

 List<object> _l = new List<object>();

_l.Add(new {
    Period = _period,
    Ref_No = _ref_no,
    Status = _status,
    Status_Text = _status_text,
    Message = _message
});

状态值将是 0,1 或 2

我不想使用类,如何按状态排序?

需要帮助

提前非常感谢

不要

【问题讨论】:

  • 为什么不想使用类?
  • “我不想使用类”你认为List&lt;object&gt; 是什么?
  • 我的课太多了,我只想用一个对象..可以吗?
  • 这不是stackoverflow.com/questions/5461479/sort-list-by-field-c 的重复项该问题是关于包含已知类型的列表。这是转换为object 的匿名类列表。您无法在没有反射的情况下访问属性,因为您也不知道要转换 object 的类型,而且显然 object 不包含他们想要排序的属性。
  • @PavelAnikhouski 是的,我的错误,为时已晚。

标签: c#


【解决方案1】:

用这个函数来做

 public List<Object> SortLST(string SDirection, string propertie, List<Object> data)
    {

        List<Object> data_sorted = new List<Object>();

        if (SDirection == "Ascending")
        {
            data_sorted = (from n in data
                           orderby GetDynamicSortProperty(n, propertie) ascending
                           select n).ToList();
        }
        else if (SDirection == "Descending")
        {
            data_sorted = (from n in data
                           orderby GetDynamicSortProperty(n, propertie) descending
                           select n).ToList();

        }

        return data_sorted;

    }

    public object GetDynamicSortProperty(object item, string propName)
    {
        //Use reflection to get order type
        return item.GetType().GetProperty(propName).GetValue(item, null);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    相关资源
    最近更新 更多