Linq sorgusuna bir İfadede geçmek, kullanılan sözdizimine bağlı olarak farklı davranır ve bunun neden böyle olduğunu merak ediyorum.Linq Burada anahtar kelime vs. Uzantı ve İfade parametrelerinin nerede olduğu
ı bu çok genel işlevi var diyelim
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
{
return (from c in _ctx.Companies.Where(whereClause) select c);
}
beklenen Ama bu bir sonraki uygulama almaz (Delege 'System.Func' derleme değil Aşağıdaki uygulama çalışır
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
1 bağımsız değişkenler)
private IEnumerable<Company>
GetCompanies(Expression<Func<Company, bool>> whereClause)
{
return (from c in _ctx.Companies where whereClause select c);
}
Açıkçası İlk sözdizimini kullanabilirim, fakat derleyicinin niçin anahtar kelimenin Nerede uzantısı ile aynı olduğunu düşünmediğini merak ettim.
sayesinde Thomas
Eğer Func ifadesini Expression > yerine argüman olarak kabul edecekseniz, parametre olarak Predicate belgesini kullanmış olabilirsiniz. –
Evet, bu yalnızca 'nerede' farklılıklarına odaklanmak için basitleştirilmiş bir örnektir. Bir İfadenin kullanılmasının nedeni>, bellekte değil, veri tabanında nerede yürütülmesini isteyeceğim. –