Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用两个参数在表中搜索,其中一个参数是整数列表_C#_Sql Server_Stored Procedures_Asp.net Web Api_Table Valued Parameters - Fatal编程技术网

C# 使用两个参数在表中搜索,其中一个参数是整数列表

C# 使用两个参数在表中搜索,其中一个参数是整数列表,c#,sql-server,stored-procedures,asp.net-web-api,table-valued-parameters,C#,Sql Server,Stored Procedures,Asp.net Web Api,Table Valued Parameters,我正在尝试使用ASP.NET和C#创建一个存储过程,以便在web api中使用。我有一个表,其中有三列,如下所示: Id |TranName|ConfigName ---|--------|---------- 10 |ABC |abcd 11 |BDE |bdef 12 |FGH |fghi 13 |HIJ |hijk 问题是,我使用的是另一个存储过程,它返回一个整数列表,我必须使用该列表与TranName一起搜索上表。例如,给定一个整数列表9、10、11、1

我正在尝试使用ASP.NET和C#创建一个存储过程,以便在web api中使用。我有一个表,其中有三列,如下所示:

Id |TranName|ConfigName
---|--------|----------
10 |ABC     |abcd
11 |BDE     |bdef
12 |FGH     |fghi
13 |HIJ     |hijk
问题是,我使用的是另一个存储过程,它返回一个整数列表,我必须使用该列表与TranName一起搜索上表。例如,给定一个整数列表9、10、11、12、13和TranName BDE,找到相应的ConfigName(在本例中,我希望它与Id的11匹配,然后与TranName的BDE匹配,并返回bdef作为ConfigName

存储过程的代码如下所示。我正在创建一个表,用作TransTable中要搜索的参数

CREATE TYPE dbo.ScrapeTranList
AS TABLE

(
  scrapeTranId int
);
GO
CREATE PROCEDURE [dbo].[GetConfigNameById]
    -- Add the parameters for the stored procedure here
    @list AS dbo.ScrapeTranList READONLY,
    @TransName varchar = null
AS
BEGIN
    SET NOCOUNT ON;
select ConfigName 
from TransTable as T 
where T.TranName = @TransName AND T.Id IN @list
END

有人能帮我修复存储过程代码吗?

您应该将表与表值参数连接起来,如下所示:

select ConfigName 
from TransTable as T join @list L
        on T.Id = L.scrapeTranId
where T.TranName = @TransName 

您应该将表连接到表值参数,如下所示:

select ConfigName 
from TransTable as T join @list L
        on T.Id = L.scrapeTranId
where T.TranName = @TransName 

为什么不把逗号分隔的列表作为参数传递,或者更好的是作为表参数传递?@scsimon我不明白你的建议。检查你的索引一个候选者是创建TransTable上的索引(TranName)include(Id)为什么不把逗号分隔的列表作为参数传递,或者更好的是作为表参数传递呢?@scsimon我不明白你的建议。检查你的索引一个候选者正在TransTable上创建索引(TranName)包括(Id)是的!这就是我需要的。谢谢!是的!这就是我需要的。谢谢!