Lassen Sie mich sagen, ich habe eine Mitarbeiterklasse, und GetAllEmployees() gibt eine Liste der Mitarbeiterinstanz zurück. Ich möchte Mitarbeiter nach Abteilung und Geschlecht, so die Antwort, die ich habe, istGruppe mit anonymen Typ in Linq
var employeeGroup = Employee.GetAllEmployees()
.GroupBy(x => new { x.Department, x.Gender }) // I don't understand this anonymous type
.OrderBy(g => g.Key.Department)
.ThenBy(g => g.Key.Gender)
.Select(g => new { //I can understand this anonymous type
Dept = g.Key.Department,
Gender = g.Key.Gender,
Employees = g.OrderBy(x => x.Name)
});
Ich habe zwei Fragen:
Warum ein anonymer Typ durch eine mehr Schlüssel Gruppe erlaubt?
ich den ersten anonymen Typ nicht verstehen, weil aus meinem Verständnis eines Formats über den anonymen Typ
neue {field1 = x.Department, field2 = x.Gender}
Wie kann der erste anonyme Typ ohne Felder haben? Ich meine, es ist die korrekte Syntax, so etwas zu schreiben:
var anonymous = new {field1 = 1,field2 =2}
Aber es wird Fehler kompilieren, wenn ich es so schreiben:
var anonymous = new {1, 2} //compile error !!!
'field1' und' field2' sind die Felder. Wenn Sie 'select' wählen, führen Sie eine Projektion in einen anonymen Typ durch, wenn Sie' groupBy' erhalten, erhalten Sie etwas anderes: 'IEnumerable>' –
Crowcoder
Wenn Sie das 'field =' part, den Feldnamen weglassen wird aus der Variable/Eigenschaft genommen. Siehe ['anonyme Typen'] (http://stackoverflow.com/documentation/c%23/765/anonymous-types/2612/creating-an-anonymous-type#t=201701021356107409379) – Nico