Ich implementiere einen einfachen Suchdienst und mehrere verschiedene Repositories werden darin eingefügt. Die Verwahrungsstellen haben eine Methode, die für ein Ausdruck wie so verwendet werden können:Ist es möglich, diesen LINQ-Ausdruck für Entity Framework zu vereinfachen?
public IEnumerable<T> Select(Expression<Func<T, bool>> predicate)
{
return _dbSet.Where(predicate).AsEnumerable().ToList();
}
Im Moment habe ich eine Aussage wie diese in meinem Suchdienst:
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();
Gibt es eine Möglichkeit, die LINQ zu verbessern ? Die Wiederholungslosigkeit von searchString
scheint unnötig, aber ich kenne LINQ noch nicht gut genug, um zu wissen, ob es einen Weg gibt, es zu vermeiden.
http://stackoverflow.com/a/4430018/8155 aber es funktioniert nicht mit EF –
@Jonesopolis Es ist wie seine 'Select' Methode sieht ruft' Where' : 'return _dbSet.Where' .. – Quantic
@Quantic ack guten Ruf. Das ist irreführend. – Jonesopolis