Linq:在小组之后获得最重要的元素

时间:2013-08-21 18:19:23

标签: linq streaminsight

我有以下查询,我正试图通过TCount获得TopicCounts的前4名:

  var bygroup = (from element in inputSplit
                group element by element.Text into groups
                from win in groups.TumblingWindow(TimeSpan.FromSeconds(10))
                select new TopicCounts
                    {
                     Topic = groups.Key,
                     TCount = win.Count(),
                     Score = win.Avg(element => element.Sen)
                     }
                ).OrderByDescending(x => x.TCount).Distinct().Take(4); 

每当我尝试构建时,我都会收到以下错误:

  

'Microsoft.ComplexEventProcessing.Linq.IQStreamable'   不包含'OrderByDescending'的定义,也没有扩展名   方法'OrderByDescending'接受类型

的第一个参数      

'Microsoft.ComplexEventProcessing.Linq.IQStreamable'   可以找到(你错过了使用指令或程序集   引用?)

我错过了什么?

1 个答案:

答案 0 :(得分:0)

IQStreamable无法对其进行排序,因为它是一个流(因为需要整个集合,因此需要加载元素)。要对其进行排序,您需要加载整个集合。这可以通过在排序之前调用ToList来完成,但是如果集合很大,则最终会占用大量内存。