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