我的datatable
填充了字符串。
在这些列中,我想删除前两个元素。
“”编辑:按元素我的意思是数据中心字符串的前2个字符。编辑结束“”
使用remove
命令在字符串中很容易。但在datacell中是否可以这样做?
//create a list of the columns name
List<string> listadecolunas = new List<string>();
foreach (DataColumn coluna in DataAccess.Instance.tabelafinal5.Columns)
{
listadecolunas.Add(coluna.ColumnName);
}
//create a concatenated string that encolsures all the following columns
for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
{
for (int y = 2; y < listadecolunas.Count; y++)
{
string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();
if (elemento0 != "")
{
DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + " + " + elemento0;
}
}
}
我不想用详细信息来填充它,但是因为我发布了代码,最后我会得到一个以+
开头的数据中心,我想删除它,就是这样。
EDIT2: 我的手机看起来像这样
我想删除第一个+
:)
答案 0 :(得分:1)
你可以用这样的小帮手来做到这一点:
for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
{
bool isFirst = true;
for (int y = 2; y < listadecolunas.Count; y++)
{
string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();
if (elemento0 != "")
{
if(isFirst)
{
isFirst = false;
DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + elemento0;
}
else
{
DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + " + " + elemento0;
}
}
}
}
使用StringBuilder
同样的概念更有效:
StringBuilder sb = new StringBuilder();
for (int i = 0; i < DataAccess.Instance.tabelafinal5.Rows.Count; i++)
{
bool isFirst = true;
sb.Clear();
for (int y = 2; y < listadecolunas.Count; y++)
{
string elemento0 = DataAccess.Instance.tabelafinal5.Rows[i][y].ToString();
if (elemento0 != "")
{
if(isFirst)
{
isFirst = false;
}
else
{
sb.Append(" + ")
}
sb.Append(elemento0);
}
}
if(sb.Length > 0)
{
DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] = DataAccess.Instance.tabelafinal5.Rows[i]["Expressão"] + sb.ToString();
}
}
现在,如果你甚至在不同的方法中构建Cell并且你不知道之前发生了什么,你可以根据单元格的当前值是否为空来设置isFirst
,而不是分配{{ 1}}默认情况下。