[英]How to compare a List<long> with a comma-separated ids, using linq to entities
[英]Using Linq, how do I query for records matching a comma-separated list of IDs?
我有一個以逗號分隔的記錄ID列表,我從查詢字符串中獲取。 我需要返回所有記錄(來自SQL Server數據庫)與那些ID。 Linq最好的辦法是什么?
我認為它最終將轉換為“WHERE id IN(1,2,3,...)”形式的SQL語句,並且因為該查詢包含我開頭的相同的逗號分隔列表,將它打包成一個int數組然后讓Linq再次將它轉換回來似乎是一種恥辱。 但如果這是唯一的方法,那就好了。
正如您所暗示的那樣,最簡單的方法是首先將其轉換為數組。
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) );
使用Dynamic Linq可避免不必要的轉換
.Where("MyColumn.Contains(@0)", myArray)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.