私は基本的な検索サービスを実装しており、いくつかの異なるリポジトリがその中に注入されています。リポジトリは、そのように使用される発現を可能にする方法があります:Entity FrameworkのこのLINQ式を簡略化することは可能ですか?
public IEnumerable<T> Select(Expression<Func<T, bool>> predicate)
{
return _dbSet.Where(predicate).AsEnumerable().ToList();
}
私は現在、私の検索サービスでは、このような文があります:
searchResult.FoundCustomers = _customerRepository.Select(x =>
x.FirstName.StartsWith(searchString) ||
x.LastName.StartsWith(searchString) ||
x.City.StartsWith(searchString) ||
x.Country.StartsWith(searchString) ||
x.Phone.StartsWith(searchString) || x.Phone.EndsWith(searchString)).ToList();
は、LINQを改善する方法はあります? searchString
の反復性は不要と思われますが、それを回避する方法があるかどうかを知るには十分にLINQをまだ知りません。
http://stackoverflow.com/a/4430018/8155が、彼の 'SELECT'方法がWHERE''呼び出しているように見えます@JonesopolisそれはEF –
では動作しません。 : 'return _dbSet.Where' .. – Quantic
@Quantic ack良いコール。それは誤解を招く。 – Jonesopolis