Ich arbeite mit der folgenden linq-Anweisung:
var suppliers = SupplierView.Select()
.GroupBy(x => x.Name.Substring(0, 1).ToUpper(),
(alphanumeric, suppliers) => new
{
Alphanumeric = alphanumeric,
Suppliers = suppliers.OrderBy(x => x.Name).ToList()
})
.OrderBy(x => x.Alphanumeric);
Ich möchte das gerne von einer Methode zurückgeben, aber dafür glaube ich, dass ich eher einen konkreten Typ als einen anonymen Typ verwenden muss.
Hier ist der konkrete Typ:
public class AlphanumericSuppliers
{
public string Alphanumeric { get; set; }
public IOrderedEnumerable<Supplier> Suppliers { get; set; }
}
Ich habe jedoch Schwierigkeiten, die korrekte Syntax zu erhalten, um den anonymen Typ in meinen konkreten Typ zu konvertieren.
Jemand beraten?
Antworten:
6 für die Antwort № 1Erstellen Sie einfach Instanzen des konkreten Typs (in LINQ müssen keine anonymen Typen verwendet werden):
var suppliers = SupplierView.Select()
.GroupBy(x => x.Name.Substring(0, 1).ToUpper(),
(alphanumeric, suppliers) => new AlphanumericSuppliers // concrete
{
Alphanumeric = alphanumeric,
Suppliers = suppliers.OrderBy(x => x.Name).ToList() // *
})
.OrderBy(x => x.Alphanumeric);
* Wie in den Kommentaren erwähnt, entweder ändern Suppliers
sein IEnumerable<Supplier>
oder entferne die ToList
von hier aus anrufen