2012-11-16 144 views
-2

我正在查詢一個數據表使用LINQ,然後查詢結果來篩選出我想要的,問題是我需要查詢它的每個數組的值這些值是這樣的, 2,或22,或21等添加結果到LINQ查詢

所以我通常做這個

results = from a in results 
    where a.countryId.ToString().Contains(value) 
    select a; 

我想這樣做,這是什麼

foreach(string str in arrayval) 
{ 
results += from a in results 
     where a.countryId.ToString().Contains(str) 
} 

誰能幫助或者給我一些線索

謝謝

+1

你在循環中沒有對你的'str'值做任何事情?這個循環的目的是什麼? –

+0

你有沒有試過,並得到一個錯誤? 你沒有在你的foreach循環中使用'str'或'arrayval'。 – Amicable

回答

1

看起來像你想選擇基於數組值的比較結果。就像是。 Select * from table where ID in (1,2,3)。您可以嘗試以下查詢,而不是拼接結果。

var result = from a in result 
      where arrayval.Contains(a.CountryId.ToString()) 
      select a; 

如果您arrayval是一個int類型的數組,那麼你可以在a.CountryID

+0

CountryId應該包含值子字符串。在你的情況下,你只需驗證CountryId是否等於其中一個值。所以,它改變了原來的意圖(我不說原來的意圖是正確的):) –

+0

@lazyberezovsky,CountryID,應該只包含一個ID。可能是我錯了,但這就是我從這個問題所理解的。 – Habib

+0

非常感謝這個作品 –

0

末刪除.ToString()試試這個

results.Where(a=> arrayval.Contains(a.CountryId.ToString()).Aggregate("", (a,b)=> a+b); 
0

我會如創建數組值的列表

List<string> list = new List<string>() 
{ 
    "2", 
    "12", 
    "20", 
    //etc... 
}; 

,然後做

var result = results.Where(p => list.Contains(p.countryId.ToString())); 

基本上你只選擇那些包含在列表countryId的。