代码之家  ›  专栏  ›  技术社区  ›  Ólafur Waage

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

  •  3
  • Ólafur Waage  · 技术社区  · 14 年前

    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 回复  |  直到 10 年前
        1
  •  2
  •   eglasius    14 年前

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

    我只能在带有简单列表的linq表达式中使用.Contains。尽管您发布的内容似乎是一个编译时错误,但一旦您绕过它,我想您最终会得到一个运行时错误,就像我过去遇到的那样。