像LINQ中的对象运算符
|
我正在尝试在LINQ to Objects中模拟
LIKE
运算符。这是我的代码:
List<string> list = new List<string>();
list.Add(\"line one\");
list.Add(\"line two\");
list.Add(\"line three\");
list.Add(\"line four\");
list.Add(\"line five\");
list.Add(\"line six\");
list.Add(\"line seven\");
list.Add(\"line eight\");
list.Add(\"line nine\");
list.Add(\"line ten\");
string pattern = \"%ine%e\";
var res = from i in list
where System.Data.Linq.SqlClient.SqlMethods.Like(i, pattern)
select i;
由于System.Data.Linq.SqlClient.SqlMethods.Like
仅用于转换为SQL,因此没有得到我的结果。
LINQ to Objects世界中是否存在类似于sqlLIKE
运算符的东西?
没有找到相关结果
已邀请:
5 个回复
祁澈盘哼颗
然后在您的代码中:
撕吠
类似于extension7ѭ方法的粗糙扩展方法:
反过来,这将使您可以像这样设置语句的格式:
编辑 一个改进的实现,如果任何人偶然发现并想使用此代码。它为每个项目一次转换和编译正则表达式,而从LIKE到上述正则表达式的转换存在一些错误。
疼嘶桐
进行迭代并找到匹配项。 因此,您的代码应最终如下所示:
如果您不熟悉Regex,则显示为: 前0个或多个字符(。*),然后是ine(ine),然后是0个或多个字符(。*),然后是e(e),e应该是字符串($)的结尾
外镶受继
这正是我们想要的。 String.EndsWith也是如此。 但是,我们要查询城市名称为\“ L_n%\”这样的客户吗? (以大写字母\'L \'开头,而不是某些字符,\'n \'以及其他名称开头)。使用查询
这不完全是我们想要的,也更加复杂。 2.使用SqlMethods.Like方法 深入研究“ 15”命名空间,我发现了一个名为SqlMethods的辅助类,在此类情况下可能非常有用。 SqlMethods有一个名为Like的方法,可以在Linq to SQL查询中使用:
此方法获取要检查的字符串表达式(在此示例中为客户所在的城市),并以与您在SQL中编写LIKE子句相同的方式提供要测试的模式。 使用上面的查询生成所需的SQL语句:
来源:http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx
蹦吃舷弦