/ / Linq - Anonymen Typ in konkreten Typ umwandeln - c #, asp.net, linq

Linq - Anonymen Typ in einen konkreten Typ umwandeln - c #, asp.net, linq

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 № 1

Erstellen 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