Mam klasy jakIEnumerable Group By użytkownik określony dynamiczną listę kluczy
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;}
}
i mieć ewidencji wszystkich pracowników w sposób przeliczalna powiedzieć
List<Employee> Employees;
oraz listę kluczy strunowych jak
var Keys = new List<string>()
{
"Designation",
"Scale",
"DOB"
};
zakłada, że elementy listy "Klucze" są określone przez użytkownika i użytkownik może określić brak lub wiele kluczowych elementów.
Teraz chcę zgrupować wszystkich "Pracowników" za pomocą kluczy określonych na liście "Klucze" i wybrać tylko właściwości określone w "Kluczach" plus Sumę sprzedaży dla każdej grupy.
z 3 rozwiązań Próbuję użyć po wyglądał zastosowanie, ale nie mógł go używać, ponieważ nie wiem jak lista „Keys” zostaną zamienione na anonimowego typu
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()
});
Dlaczego twój ostatni fragment kodu nie jest faktycznym fragmentem kodu, ale zamiast tego jest coś zbliżonego do pseudokodu? Dlaczego chcesz zdefiniować tę listę kluczy osobno? – BCdotWEB
@BCdotWEB mój ostatni fragment kodu nie jest faktyczny, ponieważ aby ten kod działał, muszę utworzyć anonimowy typ w czasie wykonywania z określonych przez użytkownika kluczy. W moim prawdziwym scenariuszu muszę przedstawić moim użytkownikom zestawienie różnych parametrów sprzedaży, aby odpowiedzieć na pytania typu: "Ile sprzedaży wykonali pracownicy o określonym oznaczeniu" i "Ile sprzedaży wykonali pracownicy o konkretnym oznaczeniu z określoną dyscypliną" itp. Tak więc użytkownicy wybierają, według których parametrów chcą otrzymać podsumowanie. – Shahab