5

我正在使用 Linq 到 DataTable。我如何在 where 子句中应用 like 运算符。我想对数据进行搜索,就像我们在 SQL 中使用 like 运算符一样。

我搜索并尝试了以下代码,但出现错误:方法'Boolean Like(System.String, System.String)' cannot be used on the client; 它仅用于转换为 SQL。

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

return details.ToArray();
4

2 回答 2

4
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");
于 2010-12-16T17:47:25.993 回答
4

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

where yourRegex.IsMatch(row.SomeValue)

或者,如果它只是以查询开头:

where row.SomeValue.StartsWith(prefix)
于 2010-12-16T17:39:53.217 回答