Ich habe eine Frage, für die ich brauche Vorschläge in Bezug auf: Ich habe eine Tabelle (CurrentItems) mit Spalten: ID, ChangedTime, Status, ItemType, CompanyCount minus Graf in GroupBy in Linq
Die Spalte-Status enthält eine Zahl, wo 1 bedeutet hinzugefügt und 3 bedeutet entfernt
Ich muss die Gesamtzahl der Elemente zu einem bestimmten Zeitpunkt für eine bestimmte Firma zählen. Jeder Elementtyp kann mehrmals hinzugefügt werden.
Beispieltabelle enthält:
1. Company A add(1) Item 1 at 2001-01-01
2. Company B add(1) Item 1 at 2001-02-01
3. Company A removes(3) Item 1 at 2001-03-01
4. Company B add(1) Item 1 at 2001-04-01
5. Company B removes(3) Item 1 at 2001-05-01
6. Company A add(1) Item 1 at 2001-06-01
7. Company A add(1) Item 1 at 2001-07-01
8. Company B removes(3) Item 1 at 2001-08-01
Wenn ich mir anschaue, 2001-05- dann sollte das Ergebnis
Company A totalitems on date: 0
Company B totalitems on date: 1
sein, wenn ich bei 2001-08- aussehen Das Ergebnis sollte
Company A totalitems on date: 2
Company B totalitems on date: 0
sein
Die Lösung wäre schön in einer Lambda-Anweisung zu haben, wenn es möglich ist.
Wie weit bin ich gekommen?
CurrentItems.Where(o=> (o.Status==1 || Status==3) && o.UpdatedTime <
DateTime.Parse("2001-08-02") &&o.Company="A").GroupBy(z=>z.Status)
.Select(z=> new
{
Name=z.Key,
Summa=z.Count(),
}
...
Wenn ich dies in SQL ausführen würde ich zwei Auswahl der Nutzung eines von einem anderen subtrahieren, aber ich denke, dass es möglich ist, es in einer kompakteren Weise in LINQ zu schreiben.
Beachten Sie, dass Sie 'Where (lambda) .Count()' in "Count (Lambda)" ändern können. – juharr
Ja, du hast Recht, nur die Sitten, ich sehe es klarer, wenn es die Wo-Klauseln gibt, da es näher an SQL ist. – Gusman