我需要動態生成SQL查詢中使用System.Linq.Dynamic這樣的:System.Linq.Dynamic - 使用select裏面WHERE語句
SELECT
[Extent1].[FromRevision] AS [FromRevision],
[Extent1].[Field1] AS [Field1],
[Extent1].[TillRevision] AS [TillRevision],
[Extent1].[Field2] AS [Field2],
[Extent1].[Date1] AS [Date1],
[Extent1].[LastChangeDate] AS [LastChangeDate],
[Extent1].[Field3] AS [Field3]
FROM [log].[MyTable] AS [Extent1]
WHERE (([Extent1].[FromRevision] <= @p__linq__0) AND ([Extent1].[TillRevision] > @p__linq__1) AND
(NOT EXISTS (SELECT
1 AS [C1]
FROM [log].[MyTable] AS [Extent2]
WHERE ([Extent2].[Field1] = [Extent1].[Field1]) AND ([Extent2].[FromRevision] <= @p__linq__2) AND ([Extent2].[TillRevision] > @p__linq__3)
)))
以上是通過LINQ的生成泛型IQueryable,這樣的代碼:
query.Where(o =>
//ADDED
( o.FromRevision <= tillRevision &&
o.TillRevision > tillRevision &&
!query.Any(o1 =>
o1.Uid == o.Uid &&
o1.FromRevision <= fromRevision &&
o1.TillRevision > fromRevision)
)
但是有可能得到相同的結果,相同的SELECT結果使用Dynamic Linq而不是通用IQueryable?
是否有你需要使用動態的LINQ,而不是建立自己的表述的原因是什麼? – NetMage
是的,我不知道在設計時什麼類型會來這個構造函數,過濾器等等。 –