【发布时间】:2014-02-19 08:19:48
【问题描述】:
如果我使用普通 SQL,这就是我想要做的事情
-
用户选择“全部”
SELECT COLUMN FROM TABLE WHERE NAME LIKE '%' -
用户选择的特定名称
SELECT COLUMN FROM TABLE WHERE NAME LIKE 'John'
在 EF 中,类似查询的最接近的翻译似乎是 contains。所以我做了这样的事情:
string comboboxValue = getComboboxValue(); //Empty if all selected
from tb in _dbContext.TABLE
where tb.NAME.Contains(comboboxValue)
select COLUMN
这适用于检索所有内容。但是,使用 Contains 将意味着上述内容将匹配“Johnathan”,而不仅仅是“John”
有没有办法获得完全相同的行为?
【问题讨论】:
-
LIKE '%pattern%'将匹配pattern1和pattern。LIKE 'pattern'将仅匹配pattern。%- 是LIKE子句中的通配符。如果选择全部,则根本不需要WHERE!如果选择不带通配符,则不需要LIKE,使用= -
@Alexander 没错。在您的示例中,我只想匹配“模式”或如果指定,则匹配“%”。特别是,我不想要 '%pattern%',但是使用 contains 方法,这似乎是无法避免的。
标签: c# sql .net entity-framework