ich meine eigenen Erweiterungsmethoden von IQueryable < bin mit> verkettbar Anfragen wie FindAll(). FindInZip (12345) .NameStartsWith ("XYZ") erstellen. OrderByHowIWantIt () usw., die dann bei verzögerter Ausführung eine einzige Abfrage basierend auf meiner Erweiterungsmethode-Kette erstellt.Extend IQueryable <T> Wo() oder anstelle von AND-Beziehung
Das Problem dabei ist jedoch, dass alle Wo in der Verlängerung der Kette (FindXYZ, FindInZip etc.) werden immer kombinieren und was bedeutet, ich nicht so etwas tun kann.
FindAll() FirstNameStartsWith ("X"). OrLastNameStartsWith ("Z"), weil ich nicht weiß, wie ich das OR in eine separate Where-Methode injizieren kann.
Irgendeine Idee, wie ich das lösen kann?
zusätzlich; Bis jetzt verstehe ich, wie man Ausdrücke kettet, oder wenn ich sie einschließe (zB CompileAsOr (FirstNameStartsWith ("A"). LastNameStartsWith ("Z"). OrderBy (..))
Was ich versuche zu tun obwohl es etwas komplizierter ist (und PredicateBuilder hilft hier nicht ..) in dem ich möchte, dass IQQueryable grundsätzlich auf die Where-Bedingungen zugreift, die vorher eingerichtet wurden, ohne sie zu wickeln, um das Oder zwischen ihnen zu erstellen Jede Erweiterungsmethode gibt IQueryable zurück <> Ich verstehe, dass es das Wissen über den aktuellen Status von Abfragebedingungen irgendwo haben sollte, was zu der Annahme führt, dass es einen automatisierten Weg oder ein Erstellen von Or über alle vorherigen Where-Bedingungen ohne Umbruch geben sollte was du willst Or'd.
Ich fusionierte Ihre Nachfolge-Frage in diesem (und löschte das Duplikat-Konto). Ich bin mir nicht sicher, ob deine Frage (mit der zweiten Hälfte) beantwortet wird; könntest Du das erläutern? Den "aktuellen Status der Abfragebedingungen" - das ist schwer, weil die Abfrage schließlich in TSQL übersetzt wird. –
Wenn du meinst, du möchtest eine Anzahl bestehender Where-Bedingungen nehmen und sie in Or umwandeln ... meinst du damit, dass/z "? Sie könnten es wahrscheinlich tun, indem Sie einen separaten LINQ-Wrapper mit einer Where-Methode erstellen, aber ich empfehle es nicht ... Wenn Sie wirklich daran interessiert sind, fügen Sie einen Kommentar zu meiner Antwort hinzu und ich werde ein Beispiel zusammenklopfen. –
Hallo Marc, das ist genau was ich meine. Wenn Sie mir ein Beispiel geben können, würde das sehr geschätzt werden! Ich danke dir sehr! – Alex