首页 > 解决方案 > VB Datatable select is character a letter

问题描述

在 VB 中,我正在尝试执行 datatable.select 语句。我有一个需要检查字符串的第 4 个字符是否在 0 到 9 之间的地方。我使用子字符串解决了这个问题。我正在尝试做同样的事情来检查第 4 个字符是字母(大写还是小写)。
所以对于 0 到 9 我做了:

dt.Select("(cats_act_typ like '" & acttyp & "') and (cats_order like '9MS%' AND substring(cats_order,4,1) >= 0 and substring(cats_order,4,1) <= 9)").CopyToDataTable

对于 a 到 z,我尝试使用 char.isletter,但这在 select 语句中不起作用。

dt.Select("(cats_act_typ like '" & acttyp & "') AND (cats_order like '9MS%' and char.isletter(substring(cats_order,4,1)))").CopyToDataTable

那是行不通的。在 sql 中,我可以轻松地做 cat_order LIKE '9MS[aZ]%'。

标签: vb.netdatatable

解决方案


由于内存中已有数据,因此可以使用 c# 语言功能。

var dataWithLetter = dt.AsEnumerable().
    Where(Function(row) row.Field(Of string)("cats_act_typ").Contains(acttyp)).
    Where(Function(row) Char.IsLetter(row.Field(Of string)("cats_order").ToCharArray()(3)).
    CopyToDataTable()

推荐阅读