1

我有一个 web api 项目。在数据库中,我有两张评论和图片表。我想使用连接来合并这两个表,这样每张图片都应该有与之相关的所有评论。两个表都有图片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。那么我应该使用哪个连接?

4

2 回答 2

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,
                //...
            };
于 2013-09-24T15:05:08.870 回答
0

我对 LINQ 的理解充其量是有限的,但我会尝试回答我假设您要问的问题。

据我对您的问题的理解,您希望以下工作:

表 1:
PictureID
图片名称

表2:
PictureID
评论

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

如果是这样,我不相信 1 个单个查询是可能的,因为查询将为每个评论返回一张图片,最好的方法是找到 1 个图片对象,然后分别找到多个评论对象并以某种方式返回给使其显示为一个对象。

于 2013-09-24T14:40:58.947 回答