我在数据表中添加新行,我想在 1 datatable列中添加逗号分隔值。
这就是我的表现:
var dt = new DataTable();
var data=Helper.GetData();
foreach (DataRow dr in data)
{
DataRow dr = dt.NewRow();
var append = new StringBuilder();
var columns=Helper.GetColumns();
char[] characters = new char[] { ' ', ',' };
foreach(var item in columns)
{
if (columns.Count()==1)
{
dr["Id"] = dr[item].ToString();
dr["Col1"] = dr[item].ToString();
}
else
{
dr["Id"] = dr[item].ToString();
append.Append(dr[item].ToString() + ", ");
}
}
if (columns.Count() > 1)
{
dr["Col1"] = append.ToString().TrimEnd(characters);//remove comma from the end
}
}
有没有更好的方法呢?
答案 0 :(得分:3)
将您的各个列值放入列表中,然后将其与String.Join:
连接起来var dt = new DataTable();
var data=Helper.GetData();
foreach (DataRow dr in data)
{
List<string> values = new List<string>();
DataRow dr = dt.NewRow();
var columns=Helper.GetColumns();
foreach(var item in columns)
{
dr["Id"] = dr[item].ToString();
values.Add(dr[item].ToString());
}
dr["Col1"] = string.Join(",", values);
}
我承认你为什么要覆盖&#34; Id&#34;列,但上面的代码应该与您最初发布的代码具有相同的效果。
答案 1 :(得分:2)
如果我理解你想要的东西,这里有一个描述更简单方法的样本:
DataTable dt = new DataTable("SO Example");
dt.Columns.Add("A", typeof(int));
dt.Columns.Add("B", typeof(string));
dt.Columns.Add("C", typeof(string));
dt.Columns.Add("D", typeof(string));
dt.Columns.Add("Concatenation", typeof(string));
dt.Rows.Add(1, "bbbbbb", "tra la la", "d");
dt.Rows.Add(2, "b b b", "tttt", "dddddd");
dt.Rows.Add(3, "b-b-b-b-b-b", "C", "d.d.d.d.d.d");
dt.Rows.Add(4, "bBbBbBb", "CCC", "dd");
dt.Rows.Add(5, "B", "C", "D");
foreach (DataRow row in dt.Rows)
{
row["Concatenation"] = string.Join(", ", row.ItemArray.Take(row.ItemArray.Length - 1));
}
表格:
输出:
答案 2 :(得分:1)
我认为Veverke答案表明绝对是最佳解决方案。 我正好尝试整合他的解决方案组装代码......
public class BaseActivity extends Activity{
@Override
public void onResume() {
super.onResume();
// check your boolean here and act accordingly
}
}