0
我试图创建一个基本知识库,用于实体框架4.0并遇到一些麻烦。在下面的代码中,为什么不可能在一行中做到这一点?实体框架基础知识库
public IEnumerable<T> GetAll<T>(Expression<Func<T, bool>> filter)
{
IEnumerable<T> allCustomers = this.GetAll<T>();
IEnumerable<T> result = allCustomers.Where(filter.Compile());
return result;
}
这会不会导致2条SQL语句:一个没有检索所有行的WHERE子句,以及一个用WHERE子句只检索匹配谓词的行?
这怎么能用一个SQL语句完成?如果我尝试将filter.Compile()传递给Func < Customer,则bool >。
是的,工作!非常感谢!返回(this.GetAll()as IQueryable ).Where(filter); –
Andy
2010-05-03 13:24:18
@Andy:这太棒了,但仍然'GetAll()'应该返回'IQueryable '并且不应该需要投射。如果'GetAll ()'返回'IEnumerable ',则从表中选择所有行并在应用程序端进行筛选。 –
LukLed
2010-05-03 17:57:15