2012-10-01 95 views
-6

我有結構IFS:如何CONCAT凡在LINQ

if() 
{ 
    query = query.Where(....) 
} 

if() 
{ 
    query = query.Where(....) 
} 

爲他們做這兩個測試一起工作,而不會覆蓋對方?

+0

您可以在Where claus –

+4

-1中添加&&運算符。請正確地說出你的問題 – nawfal

+8

@nawfal - 是的,就像使用'your'而不是'ur'。 –

回答

1

你應該能夠鏈查詢表達式:

query = query.Where(....).Where(....); 
1

如果你想在謂語創造一定的靈活性,我建議LinqKit。有了這個庫,您可以動態建立Where條款,以獲得,例如:

if(condition) 
{ 
    predicate.And(something); 
} 
if(otherCondition) 
{ 
    predicate.Or(somethingElse); 
} 
var result = source.Where(predicate); 

它已開放的源代碼,很容易理解,立足Expression類,這實際上是使用LINQ的。

還值得注意的是,只有在需要時才計算結果 - 所以這是爲Linq2SQL創建條件的一個很好的解決方案。

0
var flg1 = cond1 == null? true : cond1; 
var flg2 = cond2 == null? true : cond2; 

var result = query.Where(flg1 && flg2) 

您也可以使用DynamicQuery library。然後你就可以像使用

query.Where("field1=1 and field2=2"); 
+0

當'cond1'和'cond2'是sql條件引用查詢中使用的數據表時,請說明這是如何工作的。 – GSerg

2

,因爲他們做的這兩個測試一起工作,而不會覆蓋對方?

您的代碼將(取決於在if() S中的結果)鏈中的查詢。

最終結果將是所有.Where(...) s都應用於源。