Ich habe eine Klasse wieIEnumerable Gruppe von Benutzer angegebene dynamische Liste der Schlüssel
public class Empolyee
{
public string Designation {get ;set;}
public string Discipline {get ;set;}
public int Scale {get ;set;}
public DateTime DOB {get ;set;}
public int Sales {get ;set;}
}
und haben Aufzeichnungen aller Mitarbeiter in einem enumerable sagen
List<Employee> Employees;
und eine Liste von String-Schlüssel wie
var Keys = new List<string>()
{
"Designation",
"Scale",
"DOB"
};
angenommen, dass Elemente der Liste "Keys" vom Benutzer angegeben sind und der Benutzer keine oder viele Schlüsselelemente angeben kann.
Jetzt möchte ich alle "Mitarbeiter" mit den Schlüsseln gruppieren, die in der Liste "Keys" angegeben sind, und nur die unter "Schlüssel" angegebenen Eigenschaften plus Summe der Verkäufe für jede Gruppe auswählen.
von 3 Lösungen habe ich versucht, zu verwenden, um nach anwendbar sah, konnte es aber nicht benutzen, weil nicht wissen, wie die Liste „Keys“ wird anonymen Typ umgewandelt werden
Employees.GroupBy(e => new { e.Key1, e.Key2, ... })
.Select(group => new {
Key1 = group.Key.Key1,
Key2 = group.Key.Key2,
...
TotalSales = group.Select(employee => employee.Sales).Sum()
});
Warum ist Ihr letztes Stück Code kein echtes Stück Code, sondern etwas, das dem Pseudocode nahe kommt? Warum möchten Sie diese Liste der Schlüssel separat definieren? – BCdotWEB
@BCdotWEB mein letztes Stück Code ist kein tatsächliches, weil für diesen Code ich anonymen Typ zur Laufzeit von Benutzer angegebenen Schlüsseln erstellen muss. In meinem tatsächlichen Szenario muss ich meinen Benutzern eine Zusammenfassung der Verkäufe bezüglich der verschiedenen Parameter präsentieren, um Fragen wie "Wie viel Verkäufe die Angestellten der spezifischen Bezeichnung getan haben" und "Wie viel Verkäufe die Angestellten der spezifischen Bezeichnung mit spezifischer Disziplin getan haben" usw So wählen die Benutzer aus, über welche Parameter sie eine Zusammenfassung erhalten möchten. – Shahab