我找到了 this posting ,关于根据特定属性选择不同的项目。
下面会在我的“结果”列表中查找,按 ID 分组,并选择第一个作为获胜者。
results.GroupBy(r => r.ID).Select(g => g.First()).ToList();
但是,我怎样才能有条件地选择获胜者呢?
例如,每个结果都包含一个名为Language.Name 的属性。
选择不同的结果时,我想选择一个 result.language.name.tolower()== regionasionalisocode
作为获胜者(如果存在)。
如果不存在,则应选择 result.Language.Name.ToLower() == "en"
作为获胜者。
最佳答案
你只需要改变Select()
:
results
.GroupBy(r => r.ID)
.Select(g => g.FirstOrDefault(r => r.Language.Name.ToLower() == regionalISOCode) ??
g.First(r => r.Language.Name.ToLower() == "en"))
.ToList();
关于c# - LINQ Distinct(),但以编程方式选择获胜者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42934971/