【发布时间】:2015-03-25 15:14:30
【问题描述】:
我有一个下面的 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')
我在 Linq 下面试过了:
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”方法。
如何实现 LEFT JOIN?
【问题讨论】:
-
你在两个查询之间改变了一些东西......在原始查询中,有一个 FROM,一个带有 FROM 的 JOIN,一个带有 INNER JOIN 的 LEFT JOIN,而在 LINQ 查询中,两个 JOIN 都反对来自。尝试在 SQL 中进行查询
-
所以从 ctg_timbersettlementlineSet 开始,然后加入 ctg_timbersettlementSet,最后离开加入 New_propertySet
标签: c# .net linq sql-server-2008