布尔包含不支持转换为SQL
我得到错误布尔包含不支持转换为SQL 我有一个房间id数组,应该删除它 我想删除此查询,但无法成功。我该怎么做布尔包含不支持转换为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
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?请注意,您将把所有的房间都拉回到内存中,然后对它们进行过滤(读取整张桌子)。这对于少量的房间来说是可以的。但是要注意,你将把所有的房间都拉回到内存中,然后对它们进行过滤(读取整个表)。对于少量的房间来说,这是可以的。