有没有办法让我像使用lambda的MVC中的查询那样做条件?我目前有:
return repository.GetAll().Where(
m => string.(m.Name, name, StringComparison.OrdinalIgnoreCase));
那我怎么把它变成一个类似的条件?
答案 0 :(得分:0)
根据您的要求使用Contains()
或StartsWith()
或EndsWith()
:
var filtered= data.Where(x=> x.Name.ToLower().Contains(name.ToLower()));
你的代码中的:
return repository.GetAll().Where(
m => m.Name.ToLower().Contains(name.ToLower()));
答案 1 :(得分:0)
通常你会使用m.Name.Contains
,这是不可能的,因为它不支持案例敏感性,就像你现在写下来的那样。 (如果这不是故意的,请使用m.Name.Contains(name)
)
提到here的另一个选项是使用CompareInfo.IndexOf
,但我不知道它是否适用于EF。
尝试一下:
repository
.GetAll()
.Where
( m => CultureInfo.InvariantCulture.CompareInfo
.IndexOf(m.Name, name, CompareOptions.IgnoreCase) > 0
)
答案 2 :(得分:0)
我之前管理它的唯一方法是使用原始sql语法,例如。
context.Blogs.SqlQuery("SELECT * FROM SomeTable WHERE SomeTable.Name like {0}", name);