Heim > Backend-Entwicklung > C++ > Wie ordne ich LINQ-Ergebnisse dynamisch mit OrderBy an?

Wie ordne ich LINQ-Ergebnisse dynamisch mit OrderBy an?

Mary-Kate Olsen
Freigeben: 2025-01-10 11:47:42
Original
120 Leute haben es durchsucht

How to Dynamically Order LINQ Results Using OrderBy?

Verwenden Sie OrderBy, um LINQ-Ergebnisse dynamisch zu sortieren

Frage:

Wie kann ich die an die OrderBy-Methode übergebenen Parameter basierend auf den Parametern dynamisch angeben?

Details:

Angenommen, Sie haben eine Liste mit Schülern und möchten diese nach einem bestimmten Attribut sortieren. Die aktuelle Implementierung verwendet hartcodierte Eigenschaftsnamen, aber wie übergebe ich Eigenschaftsnamen als Parameter?

Beispiel:

<code class="language-C#">string param = "City";
List<student> orderByAddress = existingStudents.OrderByDescending(c => param).ToList();</code>
Nach dem Login kopieren

Lösung:

Die Lösung besteht darin, Ausdrucksbäume mithilfe von Reflektion dynamisch zu erstellen. Eine Erweiterungsmethode kann wie folgt erstellt werden:

<code class="language-C#">public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string orderByProperty,
                          bool desc) 
{
     string command = desc ? "OrderByDescending" : "OrderBy";
     var type = typeof(TEntity);
     var property = type.GetProperty(orderByProperty);
     var parameter = Expression.Parameter(type, "p");
     var propertyAccess = Expression.MakeMemberAccess(parameter, property);
     var orderByExpression = Expression.Lambda(propertyAccess, parameter);
     var resultExpression = Expression.Call(typeof(Queryable), command, new Type[] { type, property.PropertyType },
                                   source.Expression, Expression.Quote(orderByExpression));
     return source.Provider.CreateQuery<TEntity>(resultExpression);
}</code>
Nach dem Login kopieren
Der Parameter

orderByProperty stellt den Attributnamen dar und desc bestimmt die Sortierreihenfolge.

Verwendung:

Sie können Ihre Studentenliste jetzt dynamisch sortieren:

<code class="language-C#">existingStudents.OrderBy("City", true); // 按城市降序排序
existingStudents.OrderBy("City", false); // 按城市升序排序</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie ordne ich LINQ-Ergebnisse dynamisch mit OrderBy an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage