linq到数据集等效于SQL LIKE子句

时间:2010-09-14 19:20:51

标签: c# linq

WHERE UserName LIKE 'fr_d'这样的SQL子句的linq等价物是什么?

我正在使用内存中的数据集而不是SQL数据库,因此我认为我不能使用类似where SqlMethods.Like(p.UserName, "Fr_d")

的内容

(不是我安装的VS2008承认SqlMethods甚至是System.Data.Linq.SqlClient 目前存在,但那是一个完全不同的问题!)

2 个答案:

答案 0 :(得分:7)

像这样:

table.Where(row => row.StringColumn.StartsWith("prefix"))

(您可能还想致电ContainsEndsWith

编辑:在您的情况下,您需要

table.Where(p => p.UserName.StartsWith("Fr") && p.UserName.EndsWith("d") && p.UserName.Length == 4)

或者,您也可以在Where子句中加入正则表达式 如果这样做,请确保在RegEx调用之外创建Where对象,以便不会为每行解析它。

答案 1 :(得分:0)

我相信这是你真正想要的。它将允许Fr {任何一个角色} d:

table.Where(p => p.UserName.StartsWith("Fr") && p.UserName.EndsWith("d") && p.UserName.Length == 4 )

不幸的是我找不到任何类似于SQL的类似LINQ to Dataset的子句...

更新:在此处找到类似的帖子:LINQ vs. DataTable.Select - How can I get the same results?

他们建议使用我不熟悉的i4o,但可能值得调查(该问题的提问者接受了i4o作为答案)。