LINQ中的部分字符串匹配

时间:2013-02-06 08:52:56

标签: linq c#-4.0

请考虑以下SQL语句 -

SELECT * FROM Customers WHERE FirstName LIKE '%IS%'

这将搜索具有'IS'作为名字一部分的客户,对吗?

我喜欢LINQ中的相同陈述 -

var names = from cust in customers where cust.FirstName ......

我无法指定该条件。 任何人都可以帮我解决这个问题。

感谢您分享您的时间和智慧。

3 个答案:

答案 0 :(得分:7)

大多数LINQ - > SQL转换器将从c#中获取一些常规方法并将它们转换为SQL。 Contains是一种非常常用的翻译和使用linq2sql和EF

的方法
var names = from cust in customers 
            where cust.FirstName.Contains("IS")
            select cust;

编辑:(不区分大小写)

var names = from cust in customers 
            where cust.FirstName.ToLower().Contains("is")
            select cust;

答案 1 :(得分:2)

对于不区分大小写contains,如果您可以使用String.IndexOf Method (String, StringComparison)

,则可以将字符串转换为相同的大小写(更低或更高)或更好
var names = from cust in customers 
            where cust.FirstName.IndexOf("IS",StringComparison.InvariantCultureIgnoreCase) >= 0
            select cust;

虽然这种方法的性能提升可以忽略不计,但它确保了一个适当的不区分大小写的比较。将StringComparison枚举用于不区分大小写的字符串比较始终是一种很好的做法。您可能会看到:The Turkish İ Problem and Why You Should Care

答案 2 :(得分:1)

试试这个:

var names = from cust in customers where cust.FirstName.Contains("IS")