【问题标题】:Sort a GenericList<T> by date property按日期属性对 GenericList<T> 进行排序
【发布时间】:2012-04-16 18:33:41
【问题描述】:

我不知道该怎么做,这两个问题对我不起作用。一个说我不能使用委托和比较器,另一个说它不能将 lambda 转换为委托。

Sort Generic List

How do I sort a generic list?

我有一个GenericList&lt;T&gt;ScheduleItem。每个项目都有一个PaymentDate 属性,即DateTime?

我基本上想根据该属性(旧->最新)对这个列表进行排序。最简单的方法是什么?

首先我尝试了这个:

transaction.ScheduleCollection.Sort(delegate(ScheduleItem p1, ScheduleItem p2)
                {
                    return p1.PaymentDate.CompareTo(p2.PaymentDate);
                });

我得到了这两个错误:

无法将匿名方法转换为类型“System.Collections.IComparer” 因为它不是委托类型

'System.Nullable' 不包含对 'CompareTo' 并且没有扩展方法 'CompareTo' 接受第一个 可以找到“System.Nullable”类型的参数 (您是否缺少 using 指令或程序集引用?)

我试过的另一个是这样的:

transaction.ScheduleCollection.Sort((lhs, rhs) => (lhs.PaymentDate.CompareTo(rhs.PaymentDate)));

得到

无法将匿名方法转换为类型“System.Collections.IComparer” 因为它不是委托类型

public void Sort(IComparer comparer);

这是我必须使用的排序方法。

【问题讨论】:

  • 当您不提供任何代码时,很难用完美的解决方案判断您做错了什么......
  • 什么是GenericList&lt;T&gt;?那是我不熟悉的集合...
  • Nikhil 或我回答了你的问题吗?

标签: c# .net sorting comparison generic-list


【解决方案1】:

您是否考虑过使用LINQ

类似: var list = list.OrderBy(x =&gt; x.PaymentDate).ToList();

【讨论】:

  • 它没有Distinct(),因为它是GenericList&lt;T&gt;,而不是List&lt;T&gt;
  • 什么是 GenericList?你编造了什么?
【解决方案2】:

使用 LINQ lambda 函数:

var OrderScheduleItem = ScheduleItems.OrderBy(p => p.PaymentDate);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    相关资源
    最近更新 更多