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%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.
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%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
Wenn Sie echte Linq-Syntax mögen, können Sie das so machen.
%Vor%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
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%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%Wenn Sie echte Linq-Syntax mögen, können Sie das so machen.
%Vor%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.
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%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.