我在Vb中有以下数据表
Id Price
----- -------
1231 100
1232 150
1235 150
我想在名为flag
的数据表中添加第三列,其最后一位数为Id
如下所示:
Id Price Flag
----- ------ ----------
1231 100 1
1232 150 2
1235 150 5
如何将列附加到具有动态绑定值的现有数据表?
有没有办法可以在不使用For循环的情况下执行此操作?
任何帮助将不胜感激
答案 0 :(得分:2)
首先需要添加DataColumn
:
table.Columns.Add("Flag", typeof(int));
现在您只需要相应地添加值:
foreach(DataRow row in table.Rows)
{
int ID = row.Field<int>("ID");
string lastDigit = ID.ToString().Last().ToString();
row.SetField("Flag", int.Parse(lastDigit));
}
避免循环的唯一方法是首先用这些值填充它,例如,如果它是从数据库中填充的。因此,即使存在DataColumn.Expression
方法(这不是这种情况),也会导致框架中出现循环。
答案 1 :(得分:0)
有没有办法可以在不使用For循环的情况下执行此操作?
是,使用以下expression添加计算列:
[id] % 10
示例(vb.net):
Using table As New DataTable()
table.Columns.Add("Id", GetType(Integer))
table.Columns.Add("Price", GetType(Decimal))
table.Rows.Add(1231I, 100D)
table.Rows.Add(1232I, 150D)
table.Rows.Add(1235I, 150D)
'Add a new computed column: expr
table.Columns.Add("Flag", GetType(Integer), "[id] % 10")
For Each row As DataRow In table.Rows
Debug.WriteLine("{0} {1} {2}", row.ItemArray)
Next
End Using
示例(C#):
using (DataTable table = new DataTable())
{
table.Columns.Add("Id", typeof(int));
table.Columns.Add("Price", typeof(decimal));
table.Rows.Add(1231, 100M);
table.Rows.Add(1232, 150M);
table.Rows.Add(1235, 150M);
//Add a new computed column: expr
table.Columns.Add("Flag", typeof(int), "[id] % 10");
foreach (DataRow row in table.Rows)
{
Debug.WriteLine("{0} {1} {2}", row.ItemArray);
}
}
输出:
1231 100 1 1232 150 2 1235 150 5