像使用 lambda 的 MVC4 中的条件

Like condition in MVC4 using lambda

有没有办法让我像在 MVC 中使用 lambda 查询一样执行条件?我目前有:

return repository.GetAll().Where(
            m => string.(m.Name, name, StringComparison.OrdinalIgnoreCase));

那么我怎样才能使它成为类似的条件呢?

根据您的要求使用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()));

通常你会使用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
 )

我之前处理过的唯一方法是使用原始 sql 语法,例如

context.Blogs.SqlQuery("SELECT * FROM SomeTable WHERE SomeTable.Name like {0}", name);