【问题标题】:Linq join - group by - OrderByDescending queryLinq join - group by - OrderByDescending 查询
【发布时间】:2018-07-20 01:24:16
【问题描述】:

我有这个问题:

from i in dc.TFFiles                    
where i.Tid == tid
group i by new { i.Title, i.Type } into gr
select gr.OrderByDescending(g => g.Version).First();

我想添加一个与另一个表的连接,这样我就可以访问第二个表的字段

这是我需要的加入,没有group by:

from i in dc.TFFiles
join c in dc.FCategory on i.CatId equals c.id 
....

如何将group by 查询与join 结合使用

这样尝试过,但它没有按版本降序对结果进行排序。即使有更高版本的文件,我总是得到版本 1。

var result =
                    from i in dc.TFFiles                    
                    where i.Tid == tid                    
                    group i by new { i.Title, i.Type } into gr
                    orderby gr.FirstOrDefault().Version descending
                    join c in dc.FCategories on gr.FirstOrDefault().CatId equals c.Id
                    select new { id = gr.FirstOrDefault().id, Title = gr.FirstOrDefault().Title, Version = gr.FirstOrDefault().Version };

【问题讨论】:

  • 问题是什么?如何将连接添加到 LINQ?
  • 与group by子句的join查询
  • @MegaTron 尝试过,但无法使用 select gr.OrderByDescending(g => g.Version).First();

标签: c# linq join group-by


【解决方案1】:

也许你可以试试:

var result =
                    from i in dc.TFFiles                    
                    where i.Tid == tid                    
                    group i by new { i.Title, i.Type } into gr
                    join c in dc.FCategories on gr.FirstOrDefault().CatId equals c.Id
                    select new { id = gr.FirstOrDefault().id, Title = gr.FirstOrDefault().Title, Version = (from cv in gr select cv.Version).Max() };

【讨论】:

    猜你喜欢
    • 2014-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多