C# ViewModel有三个不同的表,如何通过lambda将三个表连接到一个结果中?

C# ViewModel有三个不同的表,如何通过lambda将三个表连接到一个结果中?,c#,join,lambda,asp-net-mvc-1,C#,Join,Lambda,Asp Net Mvc 1,我有以下ViewModel:- public class PostCommentReplyViewModel { public List<POST> PostViewModel { get; set; } public List<COMMENT> CommentViewModel { get; set; } public List<REPLY> PostViewModel { get; set; } } 现在这个操作返回两个连接

我有以下ViewModel:-

public class PostCommentReplyViewModel
{
     public List<POST> PostViewModel { get; set; }
     public List<COMMENT> CommentViewModel { get; set; }
     public List<REPLY> PostViewModel { get; set; }
}
现在这个操作返回两个连接表的结果,但是当我尝试将三个表连接成一个结果时,我没有得到结果,我如何将三个表连接成一个结果


提前感谢:)

您走对了路,只需添加第三个加入:

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个表中没有数据可以通过同一个键进行内部联接。

谢谢您的帮助,对于这个问题,我发现最有帮助的解决方案是从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);

它也可以很容易地转换为非内部联接:问题是查询中的键不相同,问题是我现在正试图以不同的查询形式从同一个表中获取多个结果。创建另一个连接了两个表的查询,并返回结果
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);