Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
布尔包含不支持转换为SQL_Sql_Linq_Linq To Sql_Contains - Fatal编程技术网

布尔包含不支持转换为SQL

布尔包含不支持转换为SQL,sql,linq,linq-to-sql,contains,Sql,Linq,Linq To Sql,Contains,我得到错误布尔包含不支持转换为SQL 我有一个房间id数组,应该删除它 我想删除此查询,但无法成功。我该怎么做 var rooms = from rooms in entity.Rooms where myArray.contains(rooms.RoomID) select rooms; 如果这不起作用,那么这应该起作用,但我不建议使用: var roomslist =myArray.ToList(); var roomsTemp = entity.Ro

我得到错误布尔包含不支持转换为SQL

我有一个房间id数组,应该删除它

我想删除此查询,但无法成功。我该怎么做

var rooms = from rooms in entity.Rooms 
            where myArray.contains(rooms.RoomID) select rooms;
如果这不起作用,那么这应该起作用,但我不建议使用:

   var roomslist =myArray.ToList();
   var roomsTemp = entity.Rooms.ToList();
   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();

你在试着把电话混在一起。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));

你在试着把电话混在一起。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));

已经有一段时间没有L2S了,但现在开始。我可以使用宣誓的int[]。包含内置。。你是偶然使用guid的吗?也许我在想英孚。这是否有助于:

若您要为此编写一个SQL过程,您将传入一个CSV ID字符串。用同样的想法你可以(警告我的头顶):

也许
ids.Contains(“,“+rooms.RoomID+”,”)
可以工作,因为它内置了到SQL的转换(对于字符串)

另一种方法是编写自己的UDF,将CSV分解成一个表,并执行
选择EXISTS
。应该有很多这样的例子,因为存储过程就是这样做的。然后你可以:

var ids = "," + string.Join(",",myArray) + ",";
var rooms = from rooms in entity.Rooms 
        where MyMethods.Contains(ids,rooms.RoomID) select rooms;

已经有一段时间没有L2S了,但现在开始。我可以使用宣誓的int[]。包含内置。。你是偶然使用guid的吗?也许我在想英孚。这是否有助于:

若您要为此编写一个SQL过程,您将传入一个CSV ID字符串。用同样的想法你可以(警告我的头顶):

也许
ids.Contains(“,“+rooms.RoomID+”,”)
可以工作,因为它内置了到SQL的转换(对于字符串)

另一种方法是编写自己的UDF,将CSV分解成一个表,并执行
选择EXISTS
。应该有很多这样的例子,因为存储过程就是这样做的。然后你可以:

var ids = "," + string.Join(",",myArray) + ",";
var rooms = from rooms in entity.Rooms 
        where MyMethods.Contains(ids,rooms.RoomID) select rooms;

您正在使用什么LINQ技术?EF?L2S?你在用什么LINQ技术?EF?L2S?请注意,您将把所有的房间都拉回到内存中,然后对它们进行过滤(读取整张桌子)。这对于少量的房间来说是可以的。但是要注意,你将把所有的房间都拉回到内存中,然后对它们进行过滤(读取整个表)。对于少量的房间来说,这是可以的。