2012-09-09 70 views
6

您好基於搜索條件建立一個LINQ語句的任何建議?有條件的地方在LINQ

我將傳入一個'SearchCriteria'類的實例,其中所有參數都爲空。

然後我想

if (sc.a != null) 
    // add to where 

if (sc.b != null) 
    // add to where 

的關鍵是這些被OR值不與運算。

任何提示?

對於獎勵積分,我想在int上使用'contains'但我只能得到等於或不等於。

+0

「或」 是棘手的結合;做正確的事情,涉及表達樹,通常是訪問者/重寫者。你有多少變數?只有兩個?如果是這樣,坦率地做到這一點(即3個不同的常規線 - 一個X,一個Y,一個X || Y) –

+0

什麼ORM? LINQ to SQL或實體框架? – abatishchev

+0

它將潛在的十幾個參數..我正在使用EF .... –

回答

4

嘗試:

.Where(x => 
    (x.a != null ? x.a == a : false) && 
    (x.b != null ? x.b == b : false)); 

.Where(x => 
    (x.a != null && x.a == a) || 
    (x.b != null && x.b == b)); 

另外:

.Where(x => new int[] { 1, 2, 3 }.Contains(x.i)); 
+0

&&應該是|| ? –

+0

@Marc:或'':''操作符右手中的'false'。正確? – abatishchev

+0

這似乎是一個乾淨優雅的解決方案......我會看到它的規模。重新開始第二部分。我有一個整數OrderID爲12345我希望能夠搜索123並找到可以做的字符串123 * .Contains但你不能使用整數?這可以工作嗎? –