3

考虑以下 SQL 语句 -

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

这将搜索名字中包含“IS”的客户,对吧?

我喜欢在 LINQ 中使用相同的语句 -

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

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

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

4

3 回答 3

8

大多数 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;
于 2013-02-06T08:54:32.777 回答
2

对于不区分大小写contains,您可以将字符串转换为相同的大小写(小写或大写),或者如果您可以使用String.IndexOf Method (String, StringComparison)则更好

var names = from cust in customers 
            where cust.FirstName.IndexOf("IS",StringComparison.InvariantCultureIgnoreCase) >= 0
            select cust;

尽管这种方法的性能增益可能可以忽略不计,但它可以确保进行适当的不区分大小写的比较。StringComparison使用枚举进行不区分大小写的字符串比较始终是一个好习惯。您可能会看到:土耳其 İ 问题以及您应该关心的原因

于 2013-02-06T10:39:19.790 回答
1

试试这个:

var names = from cust in customers where cust.FirstName.Contains("IS")
于 2013-02-06T08:54:57.410 回答