好的,查询应该如下所示,以更新项目 1、2、3、4:
UPDATE Items
SET bitIsTab = 1
WHERE ReqID IN (1,2,3,4);
但是可以使用Linq:
List<int> selectedIds = { 1, 2, 3, 4 };
var itemsToBeUpdated = (from i in yourContext.Items
where selectedIds.Contains(i.ReqID)
select i);
itemsToBeUpdated.ForEach(i=>i.bitIsTab = 1);
yourContext.SubmitChanges();
或者您可以在存储过程中使用VARCHAR:
CREATE PROCEDURE sp_setTabItems
@ids varchar(500) AS
UPDATE Items
SET bitIsTab = 1
WHERE charindex(',' + ReqID + ',', ',' + @ids + ',') > 0;
然后使用“1,2,3,4”作为你的存储过程参数。
执行存储过程:
EXEC sp_setTabItems '1,2,3,4'
也可以以更可重用的方式完成,将bitIsTab 作为参数:
CREATE PROCEDURE sp_setTabItems
@isTab bit,
@ids varchar(500) AS
UPDATE Items
SET bitIsTab = @isTab
WHERE charindex(',' + ReqID + ',', ',' + @ids + ',') > 0;
并以这种方式执行:
EXEC sp_setTabItems '1,2,3,4',1
我更新了存储过程解决方案,因为将 INT 与 VARCHAR 进行比较不适用于 EXEC。