C# LINQ lambda表达式查询以连接更多具有不同where条件的表

C# LINQ lambda表达式查询以连接更多具有不同where条件的表,c#,linq,lambda,expression,C#,Linq,Lambda,Expression,首先,我必须根据表1中的条件值过滤该值。 然后我必须从Table1加入另一个名为Table2的表。这两个表具有公共字段条件2 最后,我应该通过加入表2和表3共同条件(最终条件)满足值,根据最终条件得到值 我使用下面的查询来获取数据。但我得到了交叉连接的结果 var result = db.Table1 .Where(m => m.u.Condition == "Condition") .Join(db.Table2, u => u.Number, uir =>

首先,我必须根据
表1
中的条件值过滤该值。 然后我必须从
Table1
加入另一个名为
Table2
的表。这两个表具有公共字段条件2

最后,我应该通过加入
表2
表3
共同条件(最终条件)满足值,根据最终条件得到值

我使用下面的查询来获取数据。但我得到了交叉连接的结果

var result = db.Table1
    .Where(m => m.u.Condition == "Condition")
    .Join(db.Table2, u => u.Number, uir => uir.Number, (u, uir) => new { u, uir })
    .Where(m => m.u.Condition2 == m.uir.Condition2)
    .Join(db.Table3, proposal => proposal.uir.ID.Leasing_Proposal_Id, prop => prop.ID,
        (proposal, prop) => new
        {
            proposal.u,
            proposal.uir,
            prop
        })
    .Where(m => m.uir.FinalCondition == m.prop.FinalCondition)
    .AsEnumerable()
    .Select(m => new Model
    {
        Name = m.Name,
        Id = m.Id,
        Dept = m.Dept
    })
    .Where(m => ((m.Name != null) ? m.Name.ToUpper().Contains("xxx") : false))
    .Cast<IResult>()
    .ToList();
var结果=db.Table1
.其中(m=>m.u.Condition==“Condition”)
.Join(db.Table2,u=>u.Number,uir=>uir.Number,(u,uir)=>new{u,uir})
其中(m=>m.u.Condition2==m.uir.Condition2)
.Join(db.Table3,proposal=>proposal.uir.ID.Leasing\u proposal\u ID,prop=>prop.ID,
(提案、道具)=>新
{
提案.u,
提案.uir,
道具
})
.其中(m=>m.uir.FinalCondition==m.prop.FinalCondition)
.可计算的()
.选择(m=>新型号
{
Name=m.Name,
Id=m.Id,
部门=m.部门
})
其中(m=>((m.Name!=null)?m.Name.ToUpper()包含(“xxx”):false))
.Cast()
.ToList();

为什么在LINQ中使用联接而不是在ORM中指定关系和导航属性?通过使用LINQ加入,您几乎失去了LINQ通过SQL提供的所有好处。您可以将此作为一条SQL语句编写吗?然后可以将其转换为LINQ查询。当然,如果您能够做到这一点,您可以使用该SQL创建一个视图,并将一个实体映射到该视图。是否有其他方法通过使用LINQ来做到这一点。因为我必须在各种条件下获得所选的值做什么?你并没有真正解释你想要什么,只是你认为解决方案会是什么样子。所有这些代码都无助于解释问题。这实际上让事情变得更难。我们甚至看不到所有这些涉及的表。请定义(仅)具有重要属性及其关系(一对多?多对多?)的表。此外:您的目标是什么?为什么在LINQ中使用联接而不是在ORM中指定关系和导航属性?通过使用LINQ加入,您几乎失去了LINQ通过SQL提供的所有好处。您可以将此作为一条SQL语句编写吗?然后可以将其转换为LINQ查询。当然,如果您能够做到这一点,您可以使用该SQL创建一个视图,并将一个实体映射到该视图。是否有其他方法通过使用LINQ来做到这一点。因为我必须在各种条件下获得所选的值做什么?你并没有真正解释你想要什么,只是你认为解决方案会是什么样子。所有这些代码都无助于解释问题。这实际上让事情变得更难。我们甚至看不到所有这些涉及的表。请定义(仅)具有重要属性及其关系(一对多?多对多?)的表。此外:你的目标是什么?