哪个Linq加入对我的场景有用,很困惑

时间:2013-09-24 14:29:23

标签: c# sql linq

我有一个web api项目。在数据库中,我有两个评论和图片表。我想使用join以这样的方式合并这两个表,即每个图片都应该包含与之相关的所有注释。两个表都有图片ID。我应该使用哪种连接?我需要使用linq。有人能告诉我应该使用的linq查询吗?

我尝试过以这种方式交叉加入

var combo = from p in db.picturedetails 
            from c in db.comments
            select new CommentAndPictureDetails
                {
                    IdUser = p.iduser,
                    IdPictures = p.idpictures,
                    Likes = p.likes,
                    NudityLevel = p.nuditylevel,
                    PicTitle = p.picTitle,
                    PicTime = p.pictime,
                    FakesLevel = p.fakeslevel,
                    Comment1 c.comment1,
                    CTime = c.ctime,
                    IdComments = c.idcomments,
                    SpamLevel = c.spamlevel,
                    TargetPictureId = c.targetpictureid
                };

但是我得到了所有评论的所有照片,所以这是一个非常大的json。我应该使用哪个联接?

2 个答案:

答案 0 :(得分:3)

您正在寻找群组加入的内容:

var query = from p in db.picturedetails
            join c in db.comments
            on p.PictureId equals c.PictureId into comments
            select new
            {
                ID = p.PictureId,
                Comments = comments,
                //...
            };

答案 1 :(得分:0)

我对LINQ的理解充其量是有限的,但我会尽量回答我的假设。

就我对你的问题的理解而言,你希望以下工作:

  

表1:
      PictureID
      PictureName

     

表2:
  PictureID
  评论

结果有1张图片有多条评论。这是正确的假设吗?

如果是这样的话,我不相信单个查询是可能的,因为查询会为每个评论返回一张图片,最好的方法是找到1个图片对象,然后单独找到多个评论对象并将其返回一些时尚使它看起来像一个对象。