【发布时间】:2012-03-12 13:34:13
【问题描述】:
【问题讨论】:
标签: entity-framework linq sql-like
【问题讨论】:
标签: entity-framework linq sql-like
由于目标是将 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% 通常会导致索引或表扫描)。
【讨论】:
它与 - 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"))
【讨论】: