在集合上使用Distinct()时的排序顺序

zsh*_*arp 3 c# collections

如果我的收藏是按日期排序的,那么Distinct()会取相邻重复列表中的第一个对象,还是不确定?我使用的IEqualityComparer不考虑日期字段,但我想确保始终采用最新日期.

SLa*_*aks 5

你应该使用GroupBy:

from s in whatever
group s by new { s.Field1, s.Field2 } into g
select g.OrderByDescending(o => o.Date).First()
Run Code Online (Sandbox Code Playgroud)

编辑:你也可以用你IEqualityComparerGroupBy:

whatever.GroupBy(
    s => s,      //Key
    g => g.OrderByDescending(o => o.Date).First()  //Result
    new MyComparer()
);
Run Code Online (Sandbox Code Playgroud)