是否可以添加多个'on'Linq的1个join语句

本文关键字:Linq 1个 join 语句 on 是否 添加 | 更新日期: 2023-09-27 18:16:46

我不知道它可能有一个嵌套或2或更多的on c.blah equals b.blah在LINQ的一个连接语句,因为我必须加入一个表而不影响数据的数量

因为如果我把它加到where中数据数量就会减少它起到过滤器的作用

我尝试的是添加&&子句,但它不工作

var Pos =  (from a in db.Position
            join b in db.Position_Location
             on a.ID equals b.PositionId
            join c in db.Customer
            on a.CustomerID equals c.ID
            join d in db.Customer_Location
            on b.LocationId equals d.ID 
            join f in db.Worker
             on userIdNew equals f.userId
            join e in db.Worker_Customer_Apply_Shift <----Planning to add new validation here
                     on a.ID equals e.Client_Customer_PositionID into trial
                 from newtrial in trial.DefaultIfEmpty()
                 where 
                       b.LogicalDelete == false
                       && a.LogicalDelete == false
                       && c.LogicalDelete == false
                       && d.LogicalDelete == false
                 select new
                 {
                     a.ID,
                     Client_CustomerID = c.ID,
                     LogicalDelete =(newtrial == null ? true : newtrial.LogicalDelete),

                 }).Distinct().ToList();

提前感谢:)

是否可以添加多个'on'Linq的1个join语句

您可以在连接条件中使用匿名类型的字段:

on new { a.One, a.Two } equals new { b.One, b.Two }

如果两个表中的列不具有相同的名称,则需要为匿名类型的属性提供名称:

on new { Col1 = a.One, Col2 = a.Two } equals new { Col1 = b.Three, Col2 = b.Four }