像Linq到DataTable中的运算符一样?

时间:2010-12-16 17:34:50

标签: c# linq linq-to-dataset

我正在使用Linq到DataTable。如何在where子句中应用like运算符。我想像数据中的运算符一样搜索数据。

我搜索并尝试了以下代码但出现了错误:方法'Boolean Like(System.String,System.String)'无法在客户端上使用;它仅用于转换为SQL。

var details = from addresses in dt.AsEnumerable() 
    where SqlMethods.Like(prefixText, prefixText + "%") || SqlMethods.Like(prefixText, "%" + prefixText + "%")
    select (string) addresses["Details"];                      

return details.ToArray();

3 个答案:

答案 0 :(得分:4)

您最好的选择可能是将其重新编写为正则表达式使用

where yourRegex.IsMatch(row.SomeValue)

或者如果只是以查询开始:

where row.SomeValue.StartsWith(prefix)

答案 1 :(得分:3)

var details = from addresses in dt.AsEnumerable()
                where addresses.Field<string>("Details").StartsWith(prefixText)
                ||  addresses.Field<string>("Details").Contains(prefixText)
                select addresses.Field<string>("Details");

答案 2 :(得分:2)

此链接会有帮助吗?Linq to SQL like Operator