C # mehrere Variablen im Lambda-Ausdruck innerhalb der LinQ-Abfrage

8

Ich arbeite mit einem Krankenschwester-Kalender, der aus Shifts besteht:

%Vor%

Der Krankenschwesterkalender ist IEnumerable<IShift> . Aus diesem Grund wähle ich meine eigenen Schichten ( IEnumerable<IShift> selectedShifts ) für einen kürzeren Zeitraum, um nach einigen Einschränkungen zu suchen.

Ich versuche, mehrere Bedingungen zu zählen, zum Beispiel Nachtschichten am Freitag:

%Vor%

Was ich damit zu tun habe, ist, an mehreren Tagen mehrere Dinge zu zählen. Zum Beispiel Spätschicht am Freitag und Frühschicht am nächsten Montag. Ich habe das versucht, aber VS scheint die Syntax nicht zu mögen:

%Vor%

Bearbeiten: Geschweifte Klammern im letzten Lambda-Ausdruck entfernt.

Edit2: Es gab zwei Kommentare, die besagen, dass Count nicht mehr als eine Variable innerhalb des Lambda-Ausdrucks annehmen kann. Wie sonst kann ich tun, was ich brauche, um LINQ zu verwenden?

Edit3: Klärung des Problems - Ich muss die Verschiebungen, die Spätschichten am Freitag sind, zählen und gleichzeitig gibt es eine weitere Verschiebung, die früh am nächsten Montag ist.

    
Dracke 10.05.2017, 14:30
quelle

6 Antworten

6

Sie müssen die Auflistung für dieses Problem überkreuzen - im Wesentlichen müssen Sie jedes Paar von Verschiebungskombinationen holen und die Paare zählen, wobei das erste ein ist späten Freitag und der zweite ist ein früher Montag.

Erhalte zuerst die Paare:

%Vor%

Zweitens, zählen Sie die Paare, die Ihren Kriterien entsprechen:

%Vor%

Sie können die Paare effizienter erhalten, wenn die Verschiebungen bereits sequenziell geordnet sind und Sie nur benachbarte Verschiebungen zählen möchten:

%Vor%     
Tim Rogers 10.05.2017, 14:54
quelle
3

Wenn Sie die Eingaben vor dem Pairing auf späteFridays und früheMonate reduzieren, sollte es etwas schneller gehen.

%Vor%

Auch dieser Datumsvergleich ist für Jahresstreitigkeiten schlecht.

    
Amy B 10.05.2017 15:27
quelle
1

Genau genommen können Sie etwas wie:

verwenden %Vor%

Aber leistungsmäßig könnte es besser sein, die nächste Schicht zu bestimmen, indem man sie zusammen oder mit einer Unterliste verbindet. Zum Beispiel:

%Vor%

Letzteres geht davon aus, dass die nächste Schicht die Montagschicht ist und nicht irgendeine Wochenendschicht. Mit dieser letzten Methode können Sie auch prüfen, ob die Anzahl der Tage (oder Stunden) zwischen der Spätschicht und der nächsten Schicht kleiner ist als ein "x" -Anteil

    
Me.Name 10.05.2017 15:41
quelle
0

Wenn ich die Frage richtig gelesen habe, wollen Sie nur die OR -Syntax. Dies wird zu späten Verschiebungen am Freitag und früh am Montag getrennt geben:

%Vor%     
zaitsman 10.05.2017 14:49
quelle
0

Wenn Sie echte Linq-Syntax mögen, können Sie das so machen.

%Vor%     
Filip Cordas 10.05.2017 15:49
quelle
0
___ answer43897161 ___

Genau genommen können Sie etwas wie:

verwenden %Vor%

Aber leistungsmäßig könnte es besser sein, die nächste Schicht zu bestimmen, indem man sie zusammen oder mit einer Unterliste verbindet. Zum Beispiel:

%Vor%

Letzteres geht davon aus, dass die nächste Schicht die Montagschicht ist und nicht irgendeine Wochenendschicht. Mit dieser letzten Methode können Sie auch prüfen, ob die Anzahl der Tage (oder Stunden) zwischen der Spätschicht und der nächsten Schicht kleiner ist als ein "x" -Anteil

    
___ answer43896060 ___

Sie müssen die Auflistung für dieses Problem überkreuzen - im Wesentlichen müssen Sie jedes Paar von Verschiebungskombinationen holen und die Paare zählen, wobei das erste ein ist späten Freitag und der zweite ist ein früher Montag.

Erhalte zuerst die Paare:

%Vor%

Zweitens, zählen Sie die Paare, die Ihren Kriterien entsprechen:

%Vor%

Sie können die Paare effizienter erhalten, wenn die Verschiebungen bereits sequenziell geordnet sind und Sie nur benachbarte Verschiebungen zählen möchten:

%Vor%     
___ answer43895940 ___

Wenn ich die Frage richtig gelesen habe, wollen Sie nur die %code% -Syntax. Dies wird zu späten Verschiebungen am Freitag und früh am Montag getrennt geben:

%Vor%     
___ answer43897321 ___

Wenn Sie echte Linq-Syntax mögen, können Sie das so machen.

%Vor%     
___ qstntxt ___

Ich arbeite mit einem Krankenschwester-Kalender, der aus Shifts besteht:

%Vor%

Der Krankenschwesterkalender ist %code% . Aus diesem Grund wähle ich meine eigenen Schichten ( %code% ) für einen kürzeren Zeitraum, um nach einigen Einschränkungen zu suchen.

Ich versuche, mehrere Bedingungen zu zählen, zum Beispiel Nachtschichten am Freitag:

%Vor%

Was ich damit zu tun habe, ist, an mehreren Tagen mehrere Dinge zu zählen. Zum Beispiel Spätschicht am Freitag und Frühschicht am nächsten Montag. Ich habe das versucht, aber VS scheint die Syntax nicht zu mögen:

%Vor%

Bearbeiten: Geschweifte Klammern im letzten Lambda-Ausdruck entfernt.

Edit2: Es gab zwei Kommentare, die besagen, dass Count nicht mehr als eine Variable innerhalb des Lambda-Ausdrucks annehmen kann. Wie sonst kann ich tun, was ich brauche, um LINQ zu verwenden?

Edit3: Klärung des Problems - Ich muss die Verschiebungen, die Spätschichten am Freitag sind, zählen und gleichzeitig gibt es eine weitere Verschiebung, die früh am nächsten Montag ist.

    
___ tag123linq ___ Die Language Integrated Query (LINQ) ist eine Microsoft .NET Framework-Komponente, die native Datenabfragefunktionen zu .NET-Sprachen hinzufügt. Bitte denken Sie bei Bedarf daran, ausführlichere Tags zu verwenden, zum Beispiel [linq-to-sql], [linq-to-entities] / [entity-framework] oder [plinq] ___ tag123c ___ C # (sprich "Cis") ist eine objektorientierte Programmiersprache auf hohem Niveau, die für die Erstellung einer Vielzahl von Anwendungen entworfen wurde, die auf dem .NET Framework (oder .NET Core) ausgeführt werden. C # ist einfach, leistungsfähig, typsicher und objektorientiert. ___ antwort43903433 ___

Eine andere Variante Es wird nicht besser als der Cross-Join, da es das gleiche tut, aber vielleicht ein bisschen lesbarer ist. Benutze es nur für Listen im Speicher.

%Vor%     
___ tag123lambda ___ Anonyme Funktionen oder Closures in Programmiersprachen wie Lisp, C #, C ++, Lua, Python, Ruby, Javascript oder Java. (Auch Lambda-Ausdruck.) ___ qstnhdr ___ C # mehrere Variablen im Lambda-Ausdruck innerhalb der LinQ-Abfrage ___ answer43896847 ___

Wenn Sie die Eingaben vor dem Pairing auf späteFridays und früheMonate reduzieren, sollte es etwas schneller gehen.

%Vor%

Auch dieser Datumsvergleich ist für Jahresstreitigkeiten schlecht.

    
___
fhogberg 10.05.2017 22:03
quelle

Tags und Links