我在过滤数据表时遇到问题。一列称为BANF-Nummer。使用过滤器,我收到一条错误消息。我为此编写了以下代码:
FilterExpression = "(Kontierungsobjekt = 'Kostenstelle' OR Kontierungsobjekt = 'Co-Auftrag') AND BANF-Nummer > '-1'";
dv.RowFilter = FilterExpression; //ERROR!
错误消息是:
找不到列[Nummer]
以下是另一篇帖子,链接了类似的问题:
Unable to Have (-) Dash in DataView Filter C#
此修复无法解决我的问题。如果我尝试这样做:
FilterExpression = "(Kontierungsobjekt = 'Kostenstelle' OR Kontierungsobjekt = 'Co-Auftrag') AND [BANF-Nummer] > '-1'";
dv.RowFilter = FilterExpression; //错误!
错误消息是:
找不到列[BANF-Nummer]
如果我在另一列(例如Kostenstelle)中测试此功能,则效果很好。因此,错误的名称是BANF-Nummer,我无法更改。
这是我的问题的屏幕截图:
enter image description here
对于每一个建议将不胜感激。
最佳答案
您必须将它们包装在方括号中:
FilterExpression = "(Kontierungsobjekt = 'Kostenstelle' OR Kontierungsobjekt = 'Co-Auftrag') AND [BANF-Nummer] > '-1'";
在文档here中提到的多数民众赞成
既然您已经尝试过了,但是还是没用:
dv.Table.Columns.Contains("BANF-Nummer")
返回什么?我怀疑。你是对的Tim,它返回false
然后,该表不包含此列,可能是用于填充该表的sql查询使用了别名,或者您有错字。
使用下面的LINQ查询来查找您的列(您的表包含104个已注释的列):
List<DataColumn> candidates = dv.Table.Columns.Cast<DataColumn>()
.Where(c=> c.ColumnName.StartsWith("BANF", StringComparison.OrdinalIgnoreCase))
.ToList();
关于c# - 在数据表列的名称中不能包含破折号(-),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43739168/