获取数据表行数据&;逗号、管道分隔格式的列
本文关键字:管道 分隔 格式 逗号 数据表 数据 amp 获取 | 更新日期: 2023-09-27 18:28:15
我有如下格式的C#DataTable
Name Value1 Value2 Value3
A 5 5 0
B 6 3 1
C 4 9 9
字符串中的预期格式应为
string sDataTableOutput = "A,B,C|Value1,5,6,4|Value2,5,3,9|Value3,0,1,9";
我想要带数据的列标题(除了第一列)
我试着写下面的代码,但无法完成
DataTable dtGraphOutput[0] = //Get DataTable Data ;
foreach (DataColumn dcOutput in dtGraphOutput[0].Columns)
{
foreach (DataRow drOutput in dtGraphOutput[0].Rows)
{
sTicketTypeCount += ((sTicketTypeCount == "") ? "" : ",") + dcOutput.ColumnName + Convert.ToString(drOutput[dcOutput]);
}
sTicketTypeCount += ((sTicketTypeCount == "") ? "" : "|");
}
它给了我的输出
NameA,NameB,NameC|,Value15,Value16,Value14|,Value25,Value23,Value29|,Value30,Value31,Value39|
这是LINQ,可以为您提供所需的结果:
var rows = dt.AsEnumerable();
var firstCol = string.Join(",", rows.Select(r => r.Field<string>(0)));
var otherColumns = dt.Columns.Cast<DataColumn>().Skip(1)
.Select(dc => string.Format("{0},{1}",
dc.ColumnName,
string.Join(",", rows.Select(r => r.Field<int>(dc)))));
string sDataTableOutput = string.Format("{0}|{1}",
firstCol,
string.Join("|", otherColumns));
结果:A,B,C|Value1,5,6,4|Value2,5,3,9|Value3,0,1,9
string sDataTableOutput = string.Join("|",
dtGraphOutput[0].Columns
.OfType<DataColumn>()
.Select((c,i) =>
string.Join(",",
dtGraphOutput[0].Rows
.OfType<DataRow>()
.Select((r,j)=>
(j == 0 && i != 0 ? c.ColumnName + "," : "") + r[c.ColumnName])
.ToArray())).ToArray());
.
试试这个:
DataTable dtGraphOutput[0] = //Get DataTable Data ;
foreach (DataColumn dcOutput in dtGraphOutput[0].Columns)
{
sTicketTypeCount +=dcOutput.ColumnName
foreach (DataRow drOutput in dtGraphOutput[0].Rows)
{
sTicketTypeCount += ","+ dcOutput.ColumnName + Convert.ToString(drOutput[dcOutput]);
}
sTicketTypeCount += ((sTicketTypeCount == "") ? "" : "|");
}
如果你对最后一个"|"有问题,你可以用一个简单的if 来删除它