请不要给我一个完整的工作示例,我想知道这是如何完成的,而不是获取一些我可以复制粘贴的代码
这是我需要的查询,但我无法在 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/