我得到了錯誤的布爾包含不支持轉換爲SQL布爾包含不支持轉換爲SQL
我房間ID應刪除
我想這個查詢,但我刪除的陣列不能成功。我該怎麼做?
var rooms = from rooms in entity.Rooms
where myArray.contains(rooms.RoomID) select rooms;
我得到了錯誤的布爾包含不支持轉換爲SQL布爾包含不支持轉換爲SQL
我房間ID應刪除
我想這個查詢,但我刪除的陣列不能成功。我該怎麼做?
var rooms = from rooms in entity.Rooms
where myArray.contains(rooms.RoomID) select rooms;
您試圖混合呼叫。 Array.Contains發生在客戶端上,但是您將它放到發送到SQL Server的表達式的中間。
您需要將整個批次發送到sql進行比較,或者從sql返回行並在本地進行比較。
rooms = from room in entity.Rooms.AsEnumerable()
where myArray.contains(room.RoomID)
select room;
或使用lambda語法:
rooms = entity.Rooms.AsEnumerable.Where(room => myArray.contains(room.RoomID));
仍編輯相同的錯誤 –
。請再試一次。 –
謝謝!它現在正在工作:) –
var roomslist =myArray.ToList();
var roomsTemp = entity.Rooms;
var rooms=roomsTemp.Where(x=>roomslist.Contains(x.RoomId)).ToList();
如果不工作,那麼這應該工作,但我不使用這個建議更換:
var roomslist =myArray.ToList();
var roomsTemp = entity.Rooms.ToList();
var rooms=roomsTemp.Where(x=>roomslist.Contains(x.RoomId)).ToList();
仍然有相同的錯誤 –
它已經因爲L2S一段時間,但在這裏不用。我可以發誓int []。包含內置..你是否偶然使用GUID?也許我在想EF。這是否有幫助:Linq query with Array in where clause?
如果您要爲此編寫SQL過程,您需要傳入一個CSV字符串的ID。使用同樣的想法,你可以(警告了我的頭頂部):
var ids = "," + string.Join(",",myArray) + ",";
var rooms = from rooms in entity.Rooms
where SqlMethods.Like("," + rooms.RoomID + ",", ids) select rooms;
也許ids.Contains("," + rooms.RoomID + ",")
將工作作爲具有對SQL內置(字符串)翻譯
替代是寫自己的UDF將CSV分解成表並執行SELECT EXISTS
。應該有很多這樣的例子,因爲它是用存儲過程來完成的。那麼你可以:
var ids = "," + string.Join(",",myArray) + ",";
var rooms = from rooms in entity.Rooms
where MyMethods.Contains(ids,rooms.RoomID) select rooms;
你使用什麼LINQ技術? EF? L2S? – Gabe
我m使用LINQ到sql –