c# DataRow所有的项目数组为单个字符串,附加|到每个数组
本文关键字:数组 字符串 附加 单个 DataRow 项目数 项目 | 更新日期: 2023-09-27 18:01:34
DataTable tblData = new DataTable();
MySQLProcessor.dtTable(pullDataQuery, out tblData);
foreach (DataRow columnRow in tblData.Rows)
{
//do string work here
}
columnRow看起来像这样
[0]苹果
[1]梨
[2]芒果
我想把它变成一个看起来像苹果|梨|芒果的字符串
很抱歉没有说清楚,每个表都有不同数量的数组项。
试试
object[] arr = new object[] {"1", "2" };
string joinedStr = string.Join("|",arr.Select(p => p.ToString()).ToArray());
所以,你的代码可以变成
DataTable tblData = new DataTable();
string myStr = string.Empty;
MySQLProcessor.dtTable(pullDataQuery, out tblData);
foreach (DataRow columnRow in tblData.Rows)
{
myStr = string.Join("|",columnRow.ItemArray.Select(p => p.ToString()).ToArray());
//do whatever you want
}
考虑String.Join
。必须首先提取所讨论的列值,可能是…
var cols = row.ItemArray
.Select(i => "" + i) // Not i.ToString() so when i is null -> ""
.ToArray(); // For .NET35 and before, .NET4 Join takes IEnumerable
var res = string.Join("|", cols);
…或类似的。
快乐编码。
Mike你可以这样做
string finalString=string.Empty;
foreach (DataRow columnRow in tblData.Rows)
{
finalString+=columnRow["ColumnName"]+"|";
}
if(finalyString.length>0)
{
finalyString=finalString.Substring(0,finalString.length-1) // this removes extra "|" at the end
}
//Without Using LINQ. In case you use old DotNet (Eg.2.0)
string ArrToStr(DataRow r,string separator)
{
string temp = "";
Object[] o = r.ItemArray;
foreach(Object oo in o)
{
temp += oo.ToString() + separator;
}
return temp;
}
//So you can use like this.
string value="";
foreach (DataRow row in combine.Rows)
{
value += ArrToStr(row, ",") ;
}
[编辑]:
你可以通过它的属性ItemArray获得DataRow的所有值。ItemArray是一个数据类型为对象类型的值数组。
你可以将这个数组传递给函数string.Join(),该函数使用指定的分隔符将数组中的所有元素连接起来。
要小心,因为如果你的DataRow包含DBNull。函数string.Join()将隐式转换DBNull。值转换为空字符串(")。最后你可以得到这样的A||B。为了避免这种情况,我在示例中使用了LINQ函数Where()来摆脱DataRow的空值,并通过使用LINQ函数ToArray()将其再次转换为数组。关于DBNull.Value.ToString()的更多信息可以在msdn中找到。
在foreach循环中,你可以注意到我使用了美元符号- $(标识插值字符串的特殊字符),用于字符串插值。
"字符串插值是计算字符串字面值的过程包含一个或多个占位符,产生的结果中占位符被替换为相应的值"
在这种情况下,占位符被括在一对大括号{}中。通过使用字符串插值,我去掉了另一个用于连接字符串文字"'r'n"的+号运算符。
string str = "";
foreach (DataRow columnRow in tblData.Rows)
{
str += $"{string.Join("|", columnRow.ItemArray.Where(val => val != DBNull.Value).ToArray())}'r'n";
}
试试这个:
string record = columnRow[0].ToString() + "|" + columnRow[1].ToString() + "|" + columnRow[2].ToString();