可能重复:
使用 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 表达式而不是查询语法来执行此操作!