C# SQL到LINQ(实现左连接)

C# SQL到LINQ(实现左连接),c#,.net,linq,sql-server-2008,C#,.net,Linq,Sql Server 2008,我有一个下面的SQL查询,它更复杂,有一些GroupBy、条件等。为了让我的问题更简单,我在这里跳过了这些: SELECT SUBSTRING(TSL.ctg_name, 6, 100) AS 'TREKK', * FROM Filteredctg_timbersettlementline AS TSL INNER JOIN Filteredctg_timbersettlement AS TS ON TSL.ctg_timbersettlemen

我有一个下面的SQL查询,它更复杂,有一些GroupBy、条件等。为了让我的问题更简单,我在这里跳过了这些:

SELECT 
    SUBSTRING(TSL.ctg_name, 6, 100) AS 'TREKK', *

    FROM Filteredctg_timbersettlementline AS TSL 

    INNER JOIN Filteredctg_timbersettlement AS TS 
        ON TSL.ctg_timbersettlementid = TS.ctg_timbersettlementid 
    LEFT JOIN FilteredNew_property AS P 
        ON TS.ctg_propertyid = P.new_propertyid

    WHERE (TS.ctg_timbersettlementid = @TimberSettlementID) AND
          (TSL.ctg_reportgroup = 'TREKK')
我试过在林克下面:

var Trekks = (from ts in XrmContext.ctg_timbersettlementSet

              join tsl in XrmContext.ctg_timbersettlementlineSet
                  on ts.Id equals tsl.ctg_timbersettlementid.Id
              join p in XrmContext.New_propertySet
                  on ts.ctg_propertyid.Id equals p.New_propertyId

              into temp
              from p in temp.DefaultIfEmpty()

              where ts.ctg_timbersettlementId == TimberSettlementGuid
              where tsl.ctg_reportgroup == "TREKK"
              select new
              {
                  tsl.ctg_name,
                  ts.ctg_BasisAllocatedForestryFund,
              }).ToList();
这给我带来了一个错误: 方法“GroupJoin”不能跟在方法“Join”之后,或者不受支持。尝试使用支持的方法编写查询,或者在调用不支持的方法之前调用“AsEnumerable”或“ToList”方法


如何实现左联接?

要实现左联接,需要使用中间层DefaultIfEmpty:

var query = from c in db.Customers
            join o in db.Orders
               on c.CustomerID equals o.CustomerID into sr
            from x in sr.DefaultIfEmpty()
            select new {
               CustomerID= c.CustomerID, ContactName=c.ContactName,
               OrderID = x.OrderID == null ? -1 : x.OrderID};   

您在两个查询之间更改了某些内容。。。在原始查询中有一个FROM、一个与FROM的连接、一个与内部连接的左连接,而在LINQ查询中,两个连接都与FROM相对。尝试像在SQLSo中那样执行查询,从ctg_timbersettlementlineSet开始,然后加入ctg_timbersettlementSet,最后加入New_propertySet