Widziałem, że można dodać razem skompilowane metody.Jaki jest cel dodawania połączonych metod Func?
Expression<Func<Customer, bool>> ln = c => c.lastname.Equals(_customer.lastName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fn = c => c.firstname.Equals(_customer.firstName, StringComparison.InvariantCultureIgnoreCase);
Expression<Func<Customer, bool>> fdob = c => c.DOB.ToString("yyyyMMdd").Equals(_customer.DOB.ToString("yyyyMMdd"));
var filter = ln.Compile() + fn.Compile() + fdob.Compile();
Czy ma to sens?
bym zamierzają użyć filtra w miejsce wyrażenia lambda do filtrowania repozytorium klientów:
IEnumerable<Customer> customersFound = _repo.Customers.Where(filter);
zależności od logiki biznesowej, to może lub nie może dodać trzy opracowanych metod razem, ale pick i wybierz, i ewentualnie dodaj więcej skompilowanych metod, jak idę.
Czy ktoś może wyjaśnić, że dodanie ich razem utworzyłoby ciąg zapytania, czy nie? Czy ktoś ma lepszą sugestię?
Mogę łączyć zdania "Gdzie" i używać wyrażeń lambda, ale jestem zaintrygowany tym, co możesz zyskać na kompilacji metod i dodaniu ich!
Dziękuję Gert, bardzo pomocna. Myślę, że zainstaluję LinqKit w moim projekcie i spróbuję. Szkoda, dodając, że delegaci nie budują takiego filtra, jak się spodziewałem, ale LinqKit wygląda jak dobre rozwiązanie i wygląda dość czysto syntaktycznie. Mój projekt używa EF5 i SQL2012 na wypadek, gdyby ktoś się zastanawiał. –
Lasse i Nicholas wyjaśnili o dodaniu delegatów do multiemisji, ale sugerowane przez Gert rozwiązanie najlepiej odpowiadało: "Ktoś ma lepszą sugestię?". Wdrożyłem rozwiązanie przy użyciu LinqKit zgodnie z sugestią. Dzięki, o) –