如何在LINQ中的查询中进行聚合,分组?

时间:2010-05-13 21:54:31

标签: c# linq group-by aggregate

请不要给我一个完整的工作示例,我想知道这是怎么做的,而不是得到一些我可以复制粘贴的代码

这是我需要的查询,并且不能为我的生活在LINQ中创建它。

SELECT * FROM
dbo.Schedules s, dbo.Videos v
WHERE s.VideoID = v.ID
AND s.ID IN 
(
    SELECT MAX(ID) FROM dbo.Schedules
    WHERE ChannelID = 1
    GROUP BY VideoID
)
ORDER BY v.Rating DESC, s.StartTime DESC

我在LINQ中有“IN”查询,我想,就像这样

var uniqueList =  from schedule in db.Schedules
                  where schedule.ChannelID == channelID
                  group schedule by schedule.VideoID into s
                  select new
                  {
                      id = s.Max(i => i.ID)
                  };

这可能是错的,但现在我无法在where子句uniqueList.Contains(schedule.ID)

中检查另一个查询

如果您有任何想法我会喜欢一些提示,可能有更好的方法来编写此查询。

我收到了这个错误,并没有多大意义。

  

无法从用法中推断出方法'System.Linq.Queryable.Contains(System.Linq.IQueryable,TSource)'的类型参数。尝试明确指定类型参数。

1 个答案:

答案 0 :(得分:2)

尝试.Where(sInner => s.ID == sInner.ID).Any()。

我只能在带有简单列表的linq表达式中使用.Contains。虽然你发布的内容似乎是一个编译时错误,但是一旦你解决它,我认为你最终会得到像我过去那样的运行时错误。