2012-08-09 85 views
3

我有一個從查詢字符串中獲得的記錄ID的逗號分隔列表。我需要返回所有記錄(從SQL Server數據庫)與這些Id。 Linq中最好的方法是什麼?使用Linq,我如何查詢匹配以逗號分隔的ID列表的記錄?

我認爲它最終會轉換爲「WHERE id IN(1,2,3,...)」形式的SQL語句,並且由於該查詢包含相同的逗號分隔列表,首先,將它解包到一個int數組中似乎很遺憾,然後讓Linq再次將它轉換回來。但如果這是唯一的方法,那就好了。

+0

它是將其轉換爲一個數組反正,以避免SQL注入是一個好主意 – GTG 2012-08-09 19:58:36

回答

6

正如你所暗示的,最簡單的方法是先將它轉換爲數組。

string csv = "1,2,3"; 
IEnumerable<int> ids = csv.Split(',').Select(str => int.Parse(str)); 

var records = db.Records.Where(rec => ids.Contains(rec.id)); 
相關問題