如何在代码后面以逗号分隔的字符串形式收集sqldatasource结果?

时间:2014-12-11 12:52:57

标签: sql asp.net vb.net sqldatasource

您好,谢谢您的时间。如果我有一个Sqldatasource从我的数据库中提取基于某个条件的ID列表,我怎么能将该列表调用格式化为后面的代码中的逗号分隔字符串?例如,假设这是我正在使用的查询:

SELECT ID FROM MyDatabase WHERE Email <> ''

结果是:

   | ID |
   ------
   | 16 |
   |  2 |
   | 81 |
   |  4 |

如何将代码后面的调用作为逗号分隔列表调用,而不像下面那样使用尾随逗号?

16,2,81,4

2 个答案:

答案 0 :(得分:1)

试试这个(For in code behind):

使用for循环和concat字符串填充数据表中的数据并访问每个数据。

 For iRowIdx = 0 To dtblData.Rows.Count - 1
  Result += dtblData.Rows(iRowIdx)("ID") + ','
 Next

相反,您可以组合SQL中的值:

SELECT 
   STUFF(
       (SELECT ',' + CAST(ID as varchar(max)) 
        FROM (SELECT ID 
        FROM MyDatabase) AS B FOR 
            XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, '') 
    AS ExpectedResult

答案 1 :(得分:1)

您可以做的一件事是使用Datareader。这将允许您循环查看从查询返回的记录,并访问后面代码中的所有值。

您可以像这样使用它,

    command = new sqlcommand("Select ID from [Test]", conn)
    datareader = command.ExecuteReader()
    While datareader.Read()
        'Access the Columns here
    End While