我需要建立一個LINQ查詢,它允許我改變連接表上的where子句,但是找不到辦法做到這一點。應用動態where子句加入表
兩個查詢我構造的簡化例子有:
var myQuery = from tab1 in context.Table1
join tab2 in context.Table2 on Table1.ID equals Table2.Table1ID
where tab1.TypeCode == 3
tab2.SomeID == 4 &&
select tab1.ID;
var myQuery2 = from tab1 in context.Table1
join tab2 in context.Table2 on Table1.ID equals Table2.Table1ID
where tab1.TypeCode == 3
tab2.SomeOtherID == 4 &&
select tab1.ID;
它們之間唯一的區別是tab2.SomeID where子句更改tab2.SomeOtherID。
如果更改where子句被應用到tab1我可以在查詢中添加一個.Where但我該如何使用通用查詢並指定不同的tab2 where子句?
我實際上使用這種方法,並認爲L2S將刪除冗餘的條件。然而,它沒有,並且在SQL中有1 == 0的地方並不重要,我希望有一個更清晰的方法。 – sipwiz 2010-07-09 11:53:46
再次檢查您的查詢 - 除非您使用Linq-to-SQL的「編譯查詢」,否則L2S應該消除查詢中不必要的部分。 (即,可以在客戶端進行評估的部分) – KristoferA 2010-07-10 03:09:45
L2S在消除查詢的不必要部分方面不是那麼複雜。我必須減少表達式是LINQ爲true或false來讓它們消除。儘管這是我能找到的最好的方法。 – sipwiz 2010-07-12 01:30:09