我目前有一个列表,其中包含具有字段的项目:“名称,描述,来源,标题......”。我想从此转储一个列表,但仅基于两个键,即名称和描述来唯一。基本上,我不希望列表中的项目具有相同的名称和相同的描述,但如果它们具有不同的名称和相同的描述,那么它没关系。
我用
查看了 list.select(x => x.Name).Distinct()
会给我一个具有不同名称的列表,但堆叠它们会违反其中一个唯一键不同,而且相同。
我也看了一下散列集,但我对它是如何工作完全感到困惑。
如果有人可以提供帮助,我们将不胜感激。
答案 0 :(得分:2)
如果您只是寻找所有不同的名称/描述组合:
list.Select(x => new {x.Name, x.Description}).Distinct();
答案 1 :(得分:0)
您可以使用从HERE获取的以下示例:
IEnumerable<Person> filteredList = originalList
.GroupBy(person => person.Name)
.Select(group => group.First());
或者使用DistinctBy
NuGet MoreLINQ
答案 2 :(得分:0)
var uniqueData = list.Select(x => new
{
UniqueKey = x.Name + " " + x.Description,
Data = x,
}).GroupBy(x => x.UniqueKey)
.Select(g => g.First().Data)
.ToList();
您应该使用一些唯一/特殊字符/字符串而不是&#34; &#34;确保UniqueKey非常独特。