Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按发生次数可数的顺序_C#_Linq_Sql Order By_Ienumerable - Fatal编程技术网

C# 按发生次数可数的顺序

C# 按发生次数可数的顺序,c#,linq,sql-order-by,ienumerable,C#,Linq,Sql Order By,Ienumerable,我有一个可枚举的实体集合,这些实体来自Linq2Sql(在此阶段它们已被枚举到数组中)。集合可能(可能会)包含同一实体的多个实例。如何对集合进行排序,以便将最常出现的实体移动到最前面 IEnumerable<Entity> results = SearchForEntities(searchCriteria); return results.OrderByDescending(e => /* Number of occurences in results? */)

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

IEnumerable<Entity> results = SearchForEntities(searchCriteria);

return results.OrderByDescending(e => /* Number of occurences in results? */)
              .Distinct()
              .Take(maxSearchResults);
IEnumerable results=SearchForEntities(searchCriteria);
返回结果。OrderByDescending(e=>/*结果中出现的次数?*/)
.Distinct()
。获取(maxSearchResults);
关于我应该在OrderByDescending表达式中放置什么,有什么帮助吗

提前感谢!:)

编辑:根据要求进行澄清。集合中多次出现的实体具有唯一id,但不是对同一对象的引用。

请尝试以下操作:

IEnumerable<Entity> results = SearchForEntities(searchCriteria);

return results.OrderByDescending(e => results.Where(a=>a == e).Count())
          .Distinct()
          .Take(maxSearchResults);
IEnumerable results=SearchForEntities(searchCriteria);
返回results.OrderByDescending(e=>results.Where(a=>a==e.Count())
.Distinct()
。获取(maxSearchResults);
试试这个:

IEnumerable<Entity> results = SearchForEntities(searchCriteria);

return results.OrderByDescending(e => results.Where(a=>a == e).Count())
          .Distinct()
          .Take(maxSearchResults);
IEnumerable results=SearchForEntities(searchCriteria);
返回results.OrderByDescending(e=>results.Where(a=>a==e.Count())
.Distinct()
。获取(maxSearchResults);
问题是:集合是否包含具有相同ID的多个实体,或者实际上是否存在对同一实体对象的多个引用

如果第一个是案例(按ID),您可能需要:

return results.GroupBy(r => r.ID)
              .OrderByDescending(g => g.Count())
              .Select(g => g.First())
              .Take(maxSearchResults);
问题是:集合是否包含具有相同ID的多个实体,或者实际上是否存在对同一实体对象的多个引用

如果第一个是案例(按ID),您可能需要:

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

非常感谢-我甚至没有想到分组!非常感谢-我甚至没有想到分组!所以你不在乎一些实体被移除了?你选择的答案只返回每组中的第一个。是的,这是我的意图。从不同的呼叫中不明显吗?啊,不知怎么的,我完全错过了。所以你不在乎一些实体被删除了吗?你选择的答案只会返回每组的第一个答案。是的,这是我的意图,从不同的电话中不明显吗?啊,不知怎么的,我完全错过了。