哪个 Linq 加入将适用于我的方案,感到困惑

本文关键字:方案 我的 Linq 适用于 哪个 | 更新日期: 2023-09-27 18:32:47

我有一个 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。那么我应该使用哪个联接呢?

哪个 Linq 加入将适用于我的方案,感到困惑

您要查找的组加入内容:

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,
                //...
            };

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

就我对你的问题的理解而言,你希望以下内容起作用:

表1:
图片编号
图片名称

表2:
图片编号
评论

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

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

相关文章: