繁体   English   中英

ASP.NET C# 如何从 SQL Server 检索数据并将多行数据转换为逗号分隔的一行?

[英]ASP.NET C# How to retrieve data from SQL Server and convert multi-row data into one row seperated by comma?

我在 SQL Server 中有这个表:

Colors
-----------
Grey
Black
Pink.Red

我希望从 SQL Server 检索数据并显示在标签中。

预期输出:

Grey,Black,Pink.Red

我试过的代码:

SqlCommand cmd2 = new SqlCommand("SELECT Colors FROM ROCK", con);
cmd.Connection.Open();
pdl.Text = cmd.ExecuteScalar().ToString(); // assign to label
cmd.Connection.Close();

有没有人有任何想法?

您可以尝试使用STRING_AGG (这只适用于SQL Server 2017起)

SELECT STRING_AGG (Colors, ',') AS csv FROM ROCK; 

或者你可以使用STUFF & XML PATH

SELECT STUFF((SELECT ',' + Colors FROM ROCK FOR XML PATH('')), 1, 1, '')

STRING_AGG 函数在 sql server 2016 中不可用。它在更高版本的 sql server 中可用。 要完成您的任务,您可以使用C# 的LINQsting join函数。

例如将所有行的sql数据放入一个DataTable dt。

var res = string.Join(",", dt.AsEnumerable().Select(x =>x["Colors"]));

或者你可以像这样使用 sql server 的 COALESCE 函数

DECLARE @listStr VARCHAR(MAX)
SELECT @listStr = COALESCE(@listStr+',' ,'') + Colors 
FROM ROCK
SELECT @listStr  

请在您的 .cs 页面中使用以下代码

string color="";
for (int i = 0; i < Colors.Items.Count; i++)
        {
            if (Colors.Items[i].Selected == true)
            {
                color += Colors.Items[i].Text + ",";
            }
        }
        color = color.TrimEnd(',');
        pd1.text=color; 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM