请原谅我下面的伪代码.我很确定有一种神奇的方法可以在单个linq语句中编写它,这也将大大提高性能.这里我列出了AList中的数百万条记录.id可能不是唯一的.我所追求的是原始列表删除所有重复项(基于id),但总是抓住最早的日期记录.当存在重复的id时,mystring几乎总是不同的值.
public class A
{
public string id { get; set; }
public string mystring { get; set; }
public DateTime mydate { get; set; }
}
List<A> aListNew = new List<A>();
foreach (var v in AList)
{
var first = AList.Where(d => d.id == v.id).OrderBy(d => d.mydate).First();
// If not already added, then we add
if (!aListNew.Where(t => t.id == first.id).Any())
aListNew.Add(first);
}
Run Code Online (Sandbox Code Playgroud)
您可以直接使用分组在一个LINQ语句中完成此操作:
List<A> aListNew = AList
.GroupBy(d => d.id)
.Select(g => g.OrderBy(i => i.mydate).First())
.ToList();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
169 次 |
| 最近记录: |