gpt4 book ai didi

c# - DataSet 并使用 IN 作为 List 进行查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:10:20 24 4
gpt4 key购买 nike

我的问题是我有带表的数据集,我想返回值

'where DocumentType IN (@list)'

,但是@list就像:

string.Join(",",DocTypes.List1);

我试过像这样使用它SELECT........ WHERE DocumentType IN (@list)(在 DataSet 表适配器向导中),但是当我执行 Fill 方法时,有一个错误:

adapter1.Fill(ds.allDocuments, string.Join(",",DocTypes.List1);

参数 2 应该是 int,而不是 string。声明也不会在数据集中工作..

有什么帮助吗?

最佳答案

你需要一个 Split 函数,然后这个就可以了:

WHERE
([DocumentType IN] IN
(SELECT Item
FROM dbo.Split(@list, ',') AS DocumentSplit))

这是表值函数的一个可能实现:

CREATE FUNCTION [dbo].[Split]
(
@ItemList NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @IDTable TABLE (Item VARCHAR(50))
AS

BEGIN
DECLARE @tempItemList NVARCHAR(MAX)
SET @tempItemList = @ItemList

DECLARE @i INT
DECLARE @Item NVARCHAR(4000)

SET @tempItemList = REPLACE (@tempItemList, ' ', '')
SET @i = CHARINDEX(@delimiter, @tempItemList)

WHILE (LEN(@tempItemList) > 0)
BEGIN
IF @i = 0
SET @Item = @tempItemList
ELSE
SET @Item = LEFT(@tempItemList, @i - 1)
INSERT INTO @IDTable(Item) VALUES(@Item)
IF @i = 0
SET @tempItemList = ''
ELSE
SET @tempItemList = RIGHT(@tempItemList, LEN(@tempItemList) - @i)
SET @i = CHARINDEX(@delimiter, @tempItemList)
END
RETURN
END

也许你需要在tableadapter的参数中手动确保它的DbType是字符串:

enter image description here

关于c# - DataSet 并使用 IN 作为 List<int> 进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318524/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com