我正在使用mvc 3和实体框架。我如何使用linq或lambda表达式进行搜索。请帮助
答案 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"))