LINQ与另一个表中的前1个连接

时间:2013-11-17 19:33:20

标签: c# linq join

所以场景是我有一个项目表,对于每个项目,在另一个表中有许多注释。我想获得最新评论的项目列表。

我这样做了:

var res = (from i in db.Item 
           select new
           { 
             ID = i.ID, 
             Name = i.Name,
             Comment = (from c in db.Comment
                        orderby c.Created descending
                        where c.Item == i.ID
                        select new { Message = c.Message }).FirstOrDefault().Message
            });

好的,这让我得到了我想要的结果,但它太慢了......请帮我把这个结合起来吧!

谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个:

var res = db.Item.Join(db.Comment, x=>x.ID, x=>x.ID, (x,y)=>new{x,y})
            .OrderByDescending(a=>a.y.Created)
            .GroupBy(a=>a.x.ID,(key,items)=>items.First())
            .Select(a=> new {
                       a.x.ID,
                       a.x.Name,
                       a.y.Message
                   });