在linq中使用like关键字

时间:2012-03-12 13:34:14

标签: entity-framework linq sql-like

  

可能重复:
  How to do SQL Like % in Linq?

我正在使用mvc 3和实体框架。我如何使用linq或lambda表达式进行搜索。请帮助

2 个答案:

答案 0 :(得分:5)

由于目标是将EF表达式解析为SQL,应该应用LIKE谓词,因此至少有3种方法可以执行此操作,具体取决于您希望%通配符的位置待放置

C#:

.Where(customer => customer.Name.StartsWith("Bloggs"))

=> SQL

 WHERE c.Name LIKE 'Bloggs%'

C#:

.Where(customer => customer.Name.Contains("Bloggs"))

=> SQL

WHERE c.Name LIKE '%Bloggs%'

C#:

.Where(customer => customer.Name.EndsWith("Bloggs"))

=> SQL

WHERE c.Name LIKE '%Bloggs'

如果适用,StartsWith应优先于其他两个,因为它更有可能在列上使用索引。 (%x%通常会导致索引或表扫描。)

答案 1 :(得分:1)

重复 - LIKE operator in LINQ How to do SQL Like % in Linq?

通常使用String.StartsWith / EndsWith / Contains。例如:

var Code = .Where(p => p.Code.Contains("BALTIMORE"))
var Code = .Where(p => p.Code.StartsWith("BALTIMORE"))
var Code = .Where(p => p.Code.EndsWith("BALTIMORE"))
相关问题