Entity framework “的用法;表达式<;Func<;对象,bool>&燃气轮机&引用;

Entity framework “的用法;表达式<;Func<;对象,bool>&燃气轮机&引用;,entity-framework,entity-framework-4,linq-to-entities,Entity Framework,Entity Framework 4,Linq To Entities,请看下面的片段: public IEnumerable<T> Query(Expression<Func<T, bool>> filter) { return filter != null ? this.ObjectSet.Where(filter) : null; } public IEnumerable查询(表达式过滤器) { 返回筛选器!=null?this.ObjectSet.Where(筛选器):null; } 例如: public IQ

请看下面的片段:

public IEnumerable<T> Query(Expression<Func<T, bool>> filter)
{
    return filter != null ? this.ObjectSet.Where(filter) : null;
}
public IEnumerable查询(表达式过滤器)
{
返回筛选器!=null?this.ObjectSet.Where(筛选器):null;
}
例如:

public IQueryable<Department> Query(Expression<Func<Department, bool>> filter)
{
    return _context.Departments.Where(filter);
}
publicIQueryable查询(表达式过滤器)
{
返回_context.Departments.Where(过滤器);
}
(原始来源:)

有人能提供一些具体的例子来说明如何用实际的查询调用第二个方法吗


谢谢

也就是说,让所有销售收入超过100美元的部门

var deparments = deparmentsRepository.Query(d => d.TotalSales > 100.0m);
Func和Expression>可以使用lambda语法以相同的方式声明

事实上,在文章中(在最后的代码片段中)有一个例子,您已经链接到了这个例子

foreach(var department in uow.Departments.Query(d => d.Budget > 150000)) { ... }
如果查询返回IQueryable,那么没有理由不构建更复杂的查询

var deparments = deparmentsRepository.Query(d => d.TotalSales > 100.0m)
    .Select(d => new { ... });
假设经理和部门有外键,您不需要加入

var deparments = deparmentsRepository.Query(d => d.Manager.Name.StartsWith("A"));