c# - 我如何在 LINQ 查询中执行此聚合、分组依据?

标签 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)

可能有更好的方法来编写此查询,如果您有任何想法,我希望得到一些提示。

我得到这个错误,它没有多大意义。

The type arguments for method 'System.Linq.Queryable.Contains(System.Linq.IQueryable, TSource)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

最佳答案

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

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

关于c# - 我如何在 LINQ 查询中执行此聚合、分组依据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2830578/

相关文章:

c# - 锁 block 内的异常

c# - 如何在 SQL Server C# 中向图像列插入空值

c# - 由于传递的数据过多而导致 WCF 服务调用失败?

c# - 如何遍历 DataTable 并根据列值获取行组?

c# - 如何使用 LINQ 更改多个对象中的相同属性?

sql - 麻烦 GROUPing postgres 中的行

python - 通过将列与多索引组进行比较来过滤 pandas 数据框

C# 播放 Vimeo 视频

c# - 如何使用 Linq 或 Lambda 连接一对多表并将扁平化结果投影为匿名类型

MySQL:将 MAX 方法与 GROUP BY 子句结合使用错误 1055