比较同一列表中的多个项目

Ski*_*tlz 4 .net c# linq compare list

List<Person> PList = new List<Person>();

PList.Add(new Person{ Name = "Bob", email = "Bob.b@blah.org" });
Run Code Online (Sandbox Code Playgroud)

基本上,它保存文件中的重复行

我想弄清楚的是如何删除许多,直到列表中每个人只有一个实例.

我最初的想法是使用for循环来运行并基于比较删除

for (int i = 0; i < List.length; i++)
{
    if (PList.position(i).name == PList.position(i++).name)
      if (PList.position(i).date is < PList.position(i++).date)
        "Then I will delete number 1" 
}
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否有更好或更简单的方法来做到这一点?

Til*_*lak 5

试试这个

PList = PList.GroupBy (x => x.Name).SelectMany (x=>x.OrderBy(y=> y.Date).Take(1))
Run Code Online (Sandbox Code Playgroud)

我还没有执行查询.

想法是第一,然后命令之后,该分组采取第一每个有序组.

  • 这是`IEnumerable <T>`的扩展方法.使用`System.Linq`命名空间添加. (2认同)