我想检查数据表条目是否包含用户输入字符串的一部分
E.g。在数据表中,如果有123456,如果用户输入1234,我应该得到一个匹配并获得该行中的值。
现在,如果存在完全匹配,我可以获取行中的值,
我的检查代码是:
string findPO = string.Format("PO = {0}",tbPOnum.Text);
DataRow[] selectRow = localDataTable.Select(findPO);
localDataTable.Rows.IndexOf(selectRow[0]);
感谢您的帮助
答案 0 :(得分:1)
它应该与LIKE表达式一起使用
string findPO = string.Format("Convert (PO,System.String) LIKE '*{0}*'",tbPOnum.Text);
DataRow[] selectRow = localDataTable.Select(findPO);
这应该返回包含值的所有行。
有关可以与Select方法一起使用的表达式的详细信息,请参阅有关DataColumn.Expression
的信息在LIKE比较中,*和%可以互换地用于通配符。如果LIKE子句中的字符串包含*或%,则这些字符应括在括号([])中。如果括号在子句中,则每个括号字符应括在括号中(例如[[]或[]])。允许在模式的开始和结束处,或在模式的结尾处或在模式的开始处使用通配符。
字符串中间不允许使用通配符。例如,不允许使用'te * xt'。
答案 1 :(得分:1)
@Jehof - 您提供的答案是正确的(使用LIKE过滤器声明)
我试图搜索的字段是一个int字段, 经过一些研究后,我得到了以下代码:
string findPO = string.Format("convert(PO, 'System.String') LIKE '%{0}%'", tbPOnum.Text);
答案 2 :(得分:0)
只循环行然后是列(反之亦然)并检查单元格的任何值,.IndexOf(findPO) == 0
。这意味着单元格的值以给定的字符串开头。你也可以使用linq。如果您需要代码示例,请分享。