是否可以在Linq to SQL中执行公用表表达式(CTE)(如下所示).我对CTE和Linq to SQL都很陌生.
我目前正在免费存储过程(但不能以任何方式对付它们)所以我不想仅仅针对一个查询进行存储过程的跳跃,除非它是完全必要的.
这是我在SQL中做的一个例子,我想知道我是否可以在Linq to SQL中做:
WITH TaskHierarchy (TaskID, [Subject], ParentID, HierarchyLevel, HierarchyPath) AS ( -- Base case SELECT TaskID, [Subject], ParentID, 1 as HierarchyLevel, CONVERT(VARCHAR(MAX),'/') AS HierarchyPath FROM Task WHERE TaskID = 2 UNION ALL -- Recursive step SELECT t.TaskID, t.Subject, t.ParentID, th.HierarchyLevel + 1 AS HierarchyLevel, CONVERT(varchar(MAX),th.HierarchyPath + CONVERT(VARCHAR(32),t.ParentID) + '/') AS HierarchyPath FROM Task t INNER JOIN TaskHierarchy th ON t.ParentID = th.TaskID ) SELECT * FROM TaskHierarchy ORDER BY HierarchyLevel, [Subject]
Chris Hynes.. 19
AFAIK,对象模型不支持此功能.但是,LINQ支持一种执行查询的方法(足够严格地称为DataContext.ExecuteQuery).看起来你可以使用它来调用任意一段SQL并将其映射回LINQ.由于嵌入式SQL,您将不再是SQL,但您不必使用sproc.
如何:直接执行SQL查询(LINQ to SQL)
AFAIK,对象模型不支持此功能.但是,LINQ支持一种执行查询的方法(足够严格地称为DataContext.ExecuteQuery).看起来你可以使用它来调用任意一段SQL并将其映射回LINQ.由于嵌入式SQL,您将不再是SQL,但您不必使用sproc.
如何:直接执行SQL查询(LINQ to SQL)