像使用lambda的MVC4中的条件一样

时间:2015-03-13 15:00:59

标签: c# asp.net-mvc-4

有没有办法让我像使用lambda的MVC中的查询那样做条件?我目前有:

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

那我怎么把它变成一个类似的条件?

3 个答案:

答案 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);