将数据表逗号分隔值放在字符串中

Ser*_*ity 5 c# asp.net

我的数据表由一个名为"ID"的列组成.没有.此列中的值有所不同.有时,此Datatable在该ID列中提取3个ID,有时为2.现在,例如,我的数据表有三个值为1,2,3.我想要的是将这三个值放在一个字符串中,并用逗号分隔它们如下: -

string test= "1,2,3";
Run Code Online (Sandbox Code Playgroud)

如果Datatable有2个值,则string应如下: -

string test= "1,2";
Run Code Online (Sandbox Code Playgroud)

我确实尝试但是徒劳无功.请帮忙.谢谢.

编辑:-

DataTable dt=new DataTable;
 dt = obj.GetIDs();

                for (int i = 0; i < dt.Rows.Count; i++)
                { 
                string test= "What should be here????";
                }
Run Code Online (Sandbox Code Playgroud)

编辑2

 foreach(DataRow dr in dt.Rows)
            {
                string str = str + "," + Convert.ToString(dr("ID"));

            }
Run Code Online (Sandbox Code Playgroud)

@Rajeev ::尝试过这个..它说dr是一个变量但是用作方法.怎么了?

dec*_*one 16

只使用LINQ的一个班轮.

String result = table.AsEnumerable()
                     .Select(row => row["ID"].ToString())
                     .Aggregate((s1, s2) => String.Concat(s1, "," + s2));
Run Code Online (Sandbox Code Playgroud)

  • 确实是单线,但这是*非常长的线;) (3认同)

Øyv*_*hen 5

使用linq,这样做:

var idlist = table.AsEnumerable().Select( r => r.Field<string>("ID")).ToArray();
string result = string.Join(",", idlist);
Run Code Online (Sandbox Code Playgroud)

这个修复了你的最后一个例子

foreach(DataRow dr in dt.Rows)
{
   string str = str + "," + Convert.ToString(dr["ID"]);
}
Run Code Online (Sandbox Code Playgroud)

您的问题是您正在尝试调用dr("ID"),但dr不是您的语法暗示的方法.请dr["ID"]改用以获取行的ID列.

但是,这最后一种方法也会给出结果",1,2,3",所以你最好像这样重写它(或使用我的LINQ变体):

List<string> myIds = new List<string>();
foreach(DataRow dr in dt.Rows)
{
   myIds.Add( Convert.ToString(dr["ID"]));
}
string result = string.Join(",", myIds);
Run Code Online (Sandbox Code Playgroud)


Dav*_*ave 5

像这样的东西:

DataTable dt = new DataTable();

string output;
for (int i = 0; i < dt.Rows.Count; i++)
{
    output = output + dt.Rows[i]["ID"].ToString();
    output += (i < dt.Rows.Count) ? "," : string.Empty;
}
Run Code Online (Sandbox Code Playgroud)