我有一个名为Item的类.Item有一个名为ItemCode的标识符属性,它是一个字符串.我想得到一个项目列表中所有非不同项目的列表.
例:
List<Item> itemList = new List<Item>()
{
new Item("code1", "description1"),
new Item("code2", "description2"),
new Item("code2", "description3"),
};
Run Code Online (Sandbox Code Playgroud)
我想要一个包含最下面两个条目的列表
如果我使用
var distinctItems = itemsList.Distinct();
Run Code Online (Sandbox Code Playgroud)
我得到了很棒的不同物品清单,但我想要几乎与此相反.我可以从原始列表中减去不同的列表,但不包含所有重复,只包含每个重复的一个实例.
我有一个游戏,无法找到一个优雅的解决方案.任何指针或帮助将非常感激.谢谢!
我有3.5所以LINQ可用
mag*_*nus 18
我的看法:
var distinctItems =
from list in itemsList
group list by list.ItemCode into grouped
where grouped.Count() > 1
select grouped;
Run Code Online (Sandbox Code Playgroud)
inc*_*lly 15
作为一种扩展方法:
public static IEnumerable<T> NonDistinct<T, TKey> (this IEnumerable<T> source, Func<T, TKey> keySelector)
{
return source.GroupBy(keySelector).Where(g => g.Count() > 1).SelectMany(r => r);
}
Run Code Online (Sandbox Code Playgroud)