请查看以下代码段:
public IEnumerable<T> Query(Expression<Func<T, bool>> filter)
{
return filter != null ? this.ObjectSet.Where(filter) : null;
}
例如:
public IQueryable<Department> Query(Expression<Func<Department, bool>> filter)
{
return _context.Departments.Where(filter);
}
任何人都可以提供一些具体示例,说明如何使用实际查询实际调用第二种方法吗?
谢谢!
答案 0 :(得分:2)
要说所有销售额超过100美元的部门
var deparments = deparmentsRepository.Query(d => d.TotalSales > 100.0m);
Func and Expression&gt;可以使用lambda语法以相同的方式声明它们。
事实上,你已经链接到这篇文章(在最后一段代码片段中)有一个例子。
foreach(var department in uow.Departments.Query(d => d.Budget > 150000)) { ... }
鉴于Query返回IQueryable,没有理由不能构建更复杂的查询。
var deparments = deparmentsRepository.Query(d => d.TotalSales > 100.0m)
.Select(d => new { ... });
假设经理和部门有外键,您不需要加入。
var deparments = deparmentsRepository.Query(d => d.Manager.Name.StartsWith("A"));