2009-08-15 44 views
2

也許一個簡單的問題,我試圖從名稱列包含所有搜索項數組的表中得到結果。我正在創建一個查詢並遍歷我的搜索字符串,每次分配query = query.Where(...);.似乎只有最後一個詞被使用了,我想是因爲我每次都試圖限制同一個字段。如果我每次迭代調用.ToArray()。AsQueryable(),我都可以得到我正在尋找的cumlative restrinction行爲,但是它有一個簡單的方法來僅使用被攻擊的運算符來執行此操作?LINQ to SQL中的多個被忽略的WHERE子句表達式

謝謝!

回答

6

如果你正在做這樣的事情:

foreach (int foo in myFooArray) 
{ 
    query = query.where(x => x.foo == foo); 
} 

...那麼它只會用,因爲每個地方的標準將包含對「富」循環變量的引用是最後一個。

如果這是你在做什麼,將其更改爲:

foreach (int foo in myFooArray) 
{ 
    int localFoo = foo; 
    query = query.where(x => x.foo == localFoo); 
} 

...,一切都應該再次被罰款。

如果這不是正在發生的事情,請提供您正在做什麼的代碼示例...

+0

好抓,一定是它。 – Marc 2009-08-15 02:09:15

+0

啊,完美!甚至沒有跨過我的腦海。好的發現確實... – Paul 2009-08-15 04:34:54

+0

這是奇怪的邊緣情況之一,它並不直接顯示發生了什麼...... :) ...只是因爲代碼沒有像我們習慣的那樣'內聯'執行大多數其他C#或VB代碼... – KristoferA 2009-08-15 04:59:15