C# SQL到LINQ(实现左连接)
我有一个下面的SQL查询,它更复杂,有一些GroupBy、条件等。为了让我的问题更简单,我在这里跳过了这些: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
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