我在过滤数据表时遇到问题。一列称为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.Colum‌​nName.StartsWith("BA‌​NF", StringComparison.OrdinalIgnoreCase))
   .ToList();

关于c# - 在数据表列的名称中不能包含破折号(-),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43739168/

10-12 04:04