エラー boolean Contains does not support conversion to SQL が発生しました
削除する必要がある部屋IDの配列があります
このクエリで削除したいのですが、うまくいきません。どうすればいいですか?
var rooms = from rooms in entity.Rooms
where myArray.contains(rooms.RoomID) select rooms;
エラー boolean Contains does not support conversion to SQL が発生しました
削除する必要がある部屋IDの配列があります
このクエリで削除したいのですが、うまくいきません。どうすればいいですか?
var rooms = from rooms in entity.Rooms
where myArray.contains(rooms.RoomID) select rooms;
通話を混ぜようとしています。Array.Containsはクライアントで発生しますが、SQLサーバーに送信される式の途中に配置しています。
比較のためにロット全体をSQLに送信するか、SQLから行を返してローカルで比較する必要があります。
rooms = from room in entity.Rooms.AsEnumerable()
where myArray.contains(room.RoomID)
select room;
またはラムダ構文を使用します:
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[].Contains が組み込まれていることを誓うことができました.. 偶然に GUID を使用していますか? 多分私はEFのことを考えています。これは役に立ちますか: where 句に配列を使用した Linq クエリ?
そのための SQL プロシージャを作成する場合は、ID の CSV 文字列を渡します。あなたができるのと同じアイデアを使用して(私の頭の上に警告します):
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 Built in (文字列の場合) への変換があるため、おそらく機能するでしょう。
別の方法として、CSV をテーブルに分割し、SELECT EXISTS
. これはストアド プロシージャで行う方法であるため、多くの例があるはずです。次に、次のことができます。
var ids = "," + string.Join(",",myArray) + ",";
var rooms = from rooms in entity.Rooms
where MyMethods.Contains(ids,rooms.RoomID) select rooms;