ja predykaty budynku za klasę PrediateBuilder LinqKit za dynamicznie filtry konfiguracji i chcę połączyć zagnieżdżone jeden do drugiego:.zagnieżdżanie PredicateBuilder predykaty: „Parametr«F»nie był związany w określonym LINQ do podmiotów kwerendy wyrażenia”
Znam ten (http://www.albahari.com/nutshell/predicatebuilder.aspx):
Oto mój kod:
// The main predicate.
var mainPredicate = PredicateBuilder.True<Document>();
// ... some other conditions to the main predicate here ...
// The inner predicate (combined conditions using OR).
var innerPredicate = PredicateBuilder.False<Document>();
foreach (var period in periods)
{
var p = period;
innerPredicate =
innerPredicate.Or(
d =>
(d.Date >= p.DateFrom && d.Date <= p.DateTo));
}
mainPredicate = mainPredicate.And(innerPredicate);
documents = this.ObjectSet.AsExpandable().Where(mainPredicate).ToList();
jestem łącząc moje dwa predykaty tak jak to jest opisane w dokumentacji. Jednak uzyskać ten wyjątek:
Parametr „F” nie jest związany z określonym LINQ jednostkach ekspresji zapytanie
po raz pierwszy, że to wewnętrzna orzeczenie musi być rozszerzony przed połączeniem go z głównego orzecznika, więc zmieniłem łącząc kod, aby dodać wywołanie do Expand
metody śródmiejskiego orzecznika jest tak:
mainPredicate = mainPredicate.And(innerPredicate.Expand());
Ale pojawia się ex działaj w tym samym wyjątku.
Jedyną różnicą w stosunku do mojego kodu dokumentacji jest to, że dynamicznie budować mój zagnieżdżonego predykatu użyciu foreach
pętlę. Po prostu nie wiem, jak może negatywnie wpłynąć na wynikową ekspresję.
Co jest nie tak z moim kodem?
Jak mogę to debugować?
Skąd pochodzi parametr f? Jak jest generowany? Dlaczego w moim przypadku jest problematyczne?
Czy istnieje jakiś rodzaj wizualizatora drzewa ekspresyjnego, który mógłby mi pomóc zobaczyć, co jest nie tak z wyrażeniem wynikowym? Ponieważ ciało wypowiedzi jest trudne do odczytania.
Patrząc na [to pytanie] (http://stackoverflow.com/questions/2947820/c-sharp-predicatebuilder-entities-the-parameter-f-was-not-bound-in-the-specif) pojawia się być może będziesz musiał użyć 'Expand()' wewnątrz 'Or'' 'innerPredicate' oraz – jszigeti
Próbowałem tego. Dostaję ten sam wyjątek. –