2014-08-30 1 views
0

Je suis confronté à un petit problème. La situation est la suivante: J'ai une table MSSQL qui contient IDs (int, identity, primarykey) et names (string). Cette table est énorme, donc je ne veux pas remplir tout le jeu de données juste pour une requête LINQ. J'ai un algorithme de recherche, qui remplit un List<int> avec plus d'un ID.C# TableAdapter Remplir/Obtenir par plusieurs ID

Je veux charger les lignes correspondantes dans un datagridview avec le code suivant:

dataGridView1.DataSource = tbl_WorklistTableAdapter.GetDataByID(ids_here); 

Mais je ne peux pas gérer plusieurs ID, un seul. Code The GetDataByID() doit être ce (je pense):

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

Cependant WHERE ID IN accepte ints séparées par des virgules, comme 1,2,3. Mais la @variable est juste un int.

Comment devrais-je convertir la chaîne en ints?

Merci, et désolé pour le mauvais eng. :)

Répondre

1

Dans ce cas, vous devez modifier en SQL, vous devez donc générer une table temporaire pour l'ID séparé par des virgules et appliquer la condition dans votre requête.

comme: -

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) 
Questions connexes