gpt4 book ai didi

c# - 按出现次数对 IEnumerable 进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 19:30:05 24 4
gpt4 key购买 nike

我有一个可枚举的实体集合,这些实体来自 Linq2Sql(在此阶段它们已被枚举到一个数组中)。该集合可能(可能会)包含同一实体的多次出现。我将如何对集合进行排序,以便将最常出现的实体移到前面?

IEnumerable<Entity> results = SearchForEntities(searchCriteria);

return results.OrderByDescending(e => /* Number of occurences in results? */)
.Distinct()
.Take(maxSearchResults);

对于我应该在 OrderByDescending 表达式中放入什么有什么帮助吗?

提前致谢! :)

编辑:按要求澄清。在集合中多次出现的实体具有唯一 ID,但不是对同一对象的引用。

最佳答案

return results.GroupBy(r => r)
.OrderByDescending(g => g.Count())
.Select(g => g.Key)
.Take(maxSearchResults);

问题是:集合是否包含多个具有相同 ID 的实体,或者实际上是否有多个对相同实体对象的引用?

如果第一个是这种情况(按 ID),您可能需要这个:

return results.GroupBy(r => r.ID)
.OrderByDescending(g => g.Count())
.Select(g => g.First())
.Take(maxSearchResults);

关于c# - 按出现次数对 IEnumerable 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583734/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com