【发布时间】:2014-06-18 13:22:24
【问题描述】:
我有这个DataTable
FName LName Tag1 Tag2 Tag3 ... (not fixed, can be as many)
我想要的是
FName LName TagAll
所以,我创建了一个TagAll 类型的列string,表达式为
var expression = string.Empty;
// ... other code
// In a loop for all tag columns
expression = expression + " + ',' + " + tagColumn;
// at the end of loop
dtContact.Columns["Tag_All"].Expression = expression;
所以,如果我有 3 列,表达式是这样的
"Tag1 + ',' + Tag2 + ',' + Tag3"
例如数据是
FName LName Tag1 Tag2 Tag3
Jeff Atwood test tag other
Matt breeden myTag total last
生成的DataTable变成这样
FName LName Tag1 Tag2 Tag3 Tag_All
Jeff Atwood test tag other test, tag, other
Matt breeden myTag total last myTag, total, last
到目前为止还不错,但现在我想删除所有其他 Tag(s) 列。我试过做
dtContact.Columns.RemoveAt(2) 但它会抛出 'System.ArgumentException'
我猜这是因为在计算列表达式中使用了该列,对吗?因为当我删除第 0 列或第 1 列时,它工作正常。那么,有没有一种方法可以删除所有这些其他 Tag(s) 列,因为它们用于计算列表达式?可能以某种方式使该列持久化?虽然我在 Google 上搜索过,但找不到任何东西。
另外,就像我说的那样,Tag(s) 列中只有 2 个、3 个或 n 个是不固定的,它们是动态的,最多只能有 1 个 Tag1。 .. 说Tag88 或其他。
【问题讨论】:
标签: c# datatable expression calculated-columns datacolumn