如何使用Lambda语法删除重复项?

时间:2012-11-30 16:51:44

标签: c# linq

  

可能重复:
  Remove duplicates in the list using linq

我正在尝试从IQueryable集合中删除重复项。我想我需要做一些嵌套选择,但我不太确定。我在linqpad中创建了一个脚本,该脚本具有原始列表,其中包含展开和折叠的重复项目。

我想要做的是从我的listWithDuplicates中选择不在dupesAsList中的项目。我还想保留listWithDuplicates中具有最高ID的记录,如果它被发现重复...

想知道是否有人可以提供帮助或告诉我删除重复项的最佳方法?

void Main()
{
    var listWithDuplicates = new List<Tuple<int,string>>();
    listWithDuplicates.Add(new Tuple<int,string>(1,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(2,"Cat"));
    listWithDuplicates.Add(new Tuple<int,string>(3,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(4,"Chicken"));
    listWithDuplicates.Add(new Tuple<int,string>(5,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(6,"Dog"));
    listWithDuplicates.Add(new Tuple<int,string>(7,"Chicken"));

    var dupesAsList = listWithDuplicates.GroupBy(s => s.Item2).SelectMany(grp => grp.Skip(1));

    var dupesGrouped = listWithDuplicates.GroupBy(s => s.Item2).Where(x => x.Count() > 1).Select(x => x.Key);

    dupesAsList.Dump();

    dupesGrouped.Dump();
}

注意:我需要使用lambda表达式而不是查询语法来执行此操作!

0 个答案:

没有答案