2011-12-21 52 views
1

我有一个整型的List在我得到一定的价值,现在我想通过一个或逗号分隔的所有值传递给我的存储过程之一,如何将int值列表从后面的代码传递给SP?

代码背后:

Cmd.Parameters.AddWithValue("@ImageId", IDList); //IDList is list of int which need to pass in my SP 

在SP

@ImageId int //declaration 

IF Not Exists(SELECT ImgIns.Id FROM ImgIns WHERE ImgIns.ImageId [email protected]) 
+0

如果您想要传递逗号分隔列表的替代方法,您还可以将列表序列化为XML并传递XML值。 – Purplegoldfish 2011-12-21 10:27:47

回答

0

现在我在for循环的帮助下一个接一个地传递值,它的工作正常..

for (int i = 0; i < IDList.Count; i++) 
{ 
    Cmd.Parameters.Clear(); 
    Cmd.Parameters.AddWithValue("@ImageId", IDList[i]); 
} 
1

将它们传递给逗号分隔的字符串并将其拆分为t-sql是我迄今发现的最佳选择。

Split function equivalent in T-SQL?将有助于拆分操作。

代码背后:

var IDList = String.Join(",", new List<int> {1,2,3}); 
Cmd.Parameters.AddWithValue("@ImageIds", IDList); 
+0

可以给你一些exp。代码为此 – Rocky 2011-12-21 10:24:31

0

创建SQL函数分裂逗号分隔列表INT http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=50648插入此列表到一些表varibale,然后你可以wrtie你的SP一样

DECLARE @ImageIDs表 (图像标识INT)

INSERT INTO @ImageIDs SELECT * FROM dbo.fn_Split(@ImageID)

IF EXISTS(SELECT 1 FROM ImageINstance I INNER JOIN @ImageIDs Img ON I.ImageID = Img.ImageID)

相关问题