我正在尝试从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表达式而不是查询语法来执行此操作!