2014-08-30 30 views
0

我遇到了一个小问题。情况是: 我有一个MSSQL表,其中包含IDs(int,identity,primarykey)和names(字符串)。 这张表是巨大的,所以我不想为一个LINQ查询填充整个数据集。 我有一个搜索算法,它用一个以上的ID填充List<int>C#TableAdapter填充/获取多个ID

我想用下面的代码加载在一个DataGridView匹配的行:

dataGridView1.DataSource = tbl_WorklistTableAdapter.GetDataByID(ids_here); 

但我不能处理多个ID,只是一个单一的。 The GetDataByID()代码需要此(我觉得):

SELECT [ID] 
     ,[NAME] 
    FROM [DataBase].[dbo].[tbl_Namelist] 
    WHERE ID IN (@searchterm) 

WHERE ID IN然而接受逗号分隔的整数,如1,2,3。但@变量只是一个int。

我应该如何将字符串转换为整数?

谢谢你,对不起,英文不好。 :)

回答

1

在这种情况下,您需要在sql中进行更改,因此您需要为逗号分隔的id生成一个临时表,并在查询中应用条件。

,如: -

DECLARE @variables VARCHAR(200) = @searchterm -- Your Variable 
CREATE TABLE #temp(ID NUMERIC) DECLARE @temp VARCHAR(200) 
SET @temp = @variables WHILE LEN(@temp) > 0 BEGIN DECLARE @t1 VARCHAR(200) 
IF CHARINDEX(',',@temp) > 0 
BEGIN 
    SET @t1 = SUBSTRING(@temp,0,CHARINDEX(',',@temp)) 
    INSERT INTO #TEMP SELECT @t1 
    SET @temp = SUBSTRING(@temp,CHARINDEX(',',@temp)+1,len(@temp)) 
END 
ELSE 
BEGIN 
    INSERT INTO #TEMP SELECT @temp 
    SET @temp = '' 
    END 
END 
SELECT [ID] 
    ,[NAME] 
FROM [DataBase].[dbo].[tbl_Namelist] 
WHERE ID IN (SELECT ID FROM #temp)