0

我有以下 ViewModel:-

public class PostCommentReplyViewModel
{
     public List<POST> PostViewModel { get; set; }
     public List<COMMENT> CommentViewModel { get; set; }
     public List<REPLY> PostViewModel { get; set; }
}

我的控制器中有以下操作:-

EntityDataModel db = new EntityDataModel();
var vm = new PostCommentReplyViewModel();
vm.PostViewModel = db.POSTs.Join(db.COMMENTs, b => b.user_id, c => c.user_id, (b, c) => b).ToList();
return View(vm);

现在此操作返回两个连接表的结果,但是当我尝试将三个表连接成一个结果时,我没有得到任何结果,如何将三个表连接成一个结果?

Linq 查询结果到 ViewModel

提前致谢 :)

4

2 回答 2

1

你是在正确的方式,你只需要添加 3rd 加入:

vm.PostViewModel = db.POSTs
            .Join(db.COMMENTs, b => b.user_id, c => c.user_id, (b, c) => b)
            .Join(db.REPLYs, b => b.user_id, c => c.user_id, (b, c) => b)
            .ToList();

没有结果的原因可能是您在所有 3 个表中都没有可以通过相同键进行 INNER JOIN 的数据。

于 2019-12-24T20:58:57.297 回答
0

感谢您的帮助,我发现对这个问题最有用的解决方案是从 ViewModel 创建单独的查询,然后我通过魔法词 Union 将它们附加到一个变量,然后我向 ViewModel 询问对象。

这是魔术:

var resultOne = db.POSTs.Join(db.COMMENTs, b => b.user_id, c => c.user_id, (b, c) => b);
var resultTwo = db.POSTs.Join(db.REPLYs, b => b.user_id, c => c.user_id, (b, c) => b);
var resultUnion = resultOne.Union(resultTwo);
vm.PostViewModel = resultUnion.ToList();
return View(vm);
于 2019-12-25T14:11:25.637 回答