该怎么做?:DataTable.Select(“ [Enabled] .ToUpper ='TRUE'”)

时间:2019-03-22 19:43:44

标签: .net vb.net

是否可以在DataTable筛选器中包含嵌入式.NET函数?我认为不是。请在与要包含的ToUpper函数有关的代码中查看我的嵌入式注释。

class TREE_OT_assign(bpy.types.Operator):

    def get_items(........

    def update(.........

    names = bpy.props.EnumProperty(items=get_items, update=update)

    def invoke(self, context, event):

2 个答案:

答案 0 :(得分:2)

有一个简单的解决方案可以解决您的问题。
代替=运算符,使用LIKE运算符

Dim MyFilteredTable As DataTable = Test(MyTable, "[Enabled] LIKE 'TRUE'")

此外,测试方法中的所有代码都可以简化为

Dim dv As DataView = New DataView(Collection_In, Select_Condition, "", DataViewRowState.CurrentRows)
Return dv.ToTable()

答案 1 :(得分:2)

接受的答案是错误的,它暗示DataColumn Expression Like比较运算符赋予某些特殊的不区分大小写的功能。

发件人:DataColumn.Expression Property - String Operators

  

要连接字符串,请使用+字符。的价值   DataSet类的CaseSensitive属性确定字符串是否   比较是区分大小写的。但是,您可以覆盖该值   带有DataTable类的CaseSensitive属性。

Like运算符适用于OP示例代码的原因是DataTable.CaseSensitive属性的默认值为False(默认值)。下面的语句将产生一个包含两行的DataTable,其中[Enabled]字段设置为不区分大小写的“ tRuE”等效项,只要该表被配置为进行不区分大小写的比较即可。

Dim MyFilteredTable As DataTable = (New DataView(MyTable, "[Enabled] ='tRuE'", "", DataViewRowState.CurrentRows)).ToTable()

发件人:DataTable.CaseSensitive Property

  

如果比较区分大小写,则为true;否则为false。否则为假。默认值   设置为父DataSet对象的CaseSensitive属性,或者 false   如果数据表是独立于数据集创建的

还要注意:Parsing Literal Expressions

  

所有文字表达必须以不变文化表达   语言环境。当DataSet解析并转换文字表达式时,它   始终使用不变文化,而不是当前文化。