C# 如何使用基于SQL查询的连接在C中编写LINQ?

C# 如何使用基于SQL查询的连接在C中编写LINQ?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,我需要基于以下查询编写一个linq 在SQL Server中 select EXID,ID,NAME from Table1 A join Table2 B on A.BXID = B.BID left outer join Table3 C ON C.AXID = A.ID AND C.EXID = (some number/NULL) 这给了我300张唱片 在林克 try { using (var context = new cltransform

我需要基于以下查询编写一个linq

在SQL Server中

select EXID,ID,NAME 
from Table1 A
join Table2 B on A.BXID = B.BID
left outer join Table3 C ON C.AXID = A.ID
AND C.EXID = (some number/NULL)
这给了我300张唱片

在林克

try
        {
            using (var context = new cltransformationContext())
            {
                var Details = (
                            from A in context.Table1
                            join B in context.Table2 on A.BXID equals B.BID
                            join C in context.Table3 on A.ID equals C.AXID  
                select new Table1()
                           {
                            ID = A.ID,
                            name = A.NAME + '-' B.Name
                            }).ToList();
                return Details;
            }
        }
我这里有5000张唱片

我错过了左外连接,C.EXID=一些数字/空条件。 如何在查询中做到这一点


我应该只获取300条记录。

此查询将创建左连接:

变量查询= 来自上下文中的A。表1 在A.BXID等于B.BID上的context.Table2中加入B 从context.Table3.where中的C=>A.ID==C.AXID&&C.EXID==..DefaultIfEmpty 选择新表1 { ID=A.ID, name=A.name+'-'B.name }; 这应该可以

var query =
    from A in context.Table1
    join B in context.Table2 on A.BXID equals B.BID
    join table3 in context.Table3.Where(X => x.EXID = 123) on A.ID == table3.AXID into table3Joined
    from C in table3Joined.DefaultIfEmpty() // this is how we do the left join
    select new Table1
    {
        ID = A.ID,
        name = A.NAME + '-' B.Name
    };

复杂性在于,我们必须将联接放入table3Joined,然后才能从table3Joined中的C执行操作。DefaultIfEmpty

您缺少and。在C中无法执行此操作。我们如何添加该条件?在context.Table3.Wherex=>x.EXID==123中连接C获得一些错误-无效的表达式术语“select”,预期的上下文关键字“on”,预期的上下文关键字“equals”,我已将连接替换为from。也许你错过了。