Heim > Backend-Entwicklung > C++ > Wie kann ich dynamisch bestimmte Spalten in LINQ auswählen?

Wie kann ich dynamisch bestimmte Spalten in LINQ auswählen?

Patricia Arquette
Freigeben: 2025-01-28 20:08:12
Original
385 Leute haben es durchsucht

How Can I Dynamically Select Specific Columns in LINQ?

Dynamic linq: Wählen Sie eine bestimmte Spalte

aus Unter der Annahme der folgenden Szene: Sie haben eine Datenklasse mit mehreren Feldern und möchten eine bestimmte Spalte basierend auf der vom Benutzer bereitgestellten Eingabedynamik auswählen. Dies bringt eine Herausforderung, da das ausgewählte Feld beim Kompilieren nicht bekannt ist.

Dynamische Lambda -Expressionserstellung

Um dieses Hindernis zu überwinden, können wir dynamisch einen Lambda -Ausdruck erstellen, der die ausgewählten ausführt. Die Methode lautet wie folgt:

wie man

verwendet
public Func<Data, Data> CreateNewStatement(string fields)
{
    // 参数
    var xParameter = Expression.Parameter(typeof(Data), "o");

    // 新实例
    var xNew = Expression.New(typeof(Data));

    // 初始化器
    var bindings = fields.Split(',')
        .Select(o => o.Trim())
        .Select(o => 
        {
            var mi = typeof(Data).GetProperty(o);
            var xOriginal = Expression.Property(xParameter, mi);
            return Expression.Bind(mi, xOriginal);
        });

    // 初始化
    var xInit = Expression.MemberInit(xNew, bindings);

    // Lambda表达式
    var lambda = Expression.Lambda<Func<Data, Data>>(xInit, xParameter);

    // 编译
    return lambda.Compile();
}
Nach dem Login kopieren
Mit Lambda -Erstellungsfunktionen können Sie jetzt dynamische Auswahlmöglichkeiten ausführen:

Dies erzeugt einen Lambda -Ausdruck, der die Eigenschaften "Feld1" und "Feld2" dynamisch auswählt, um eine benutzerdefinierte Projektion von Daten effektiv durchzuführen.

<论> Schlussfolgerung

var result = list.Select(CreateNewStatement("Field1, Field2"));
Nach dem Login kopieren

Mit dieser Technologie können Sie die Einschränkungen der statischen Definition der LINQ -Projektion überwinden und die dynamische Auswahl entsprechend der Eingabe aktivieren. Dies ermöglicht eine größere Flexibilität und Anpassungsfähigkeit, um eine größere Flexibilität und Anpassungsfähigkeit im Datenverarbeitungsszenario zu erzielen, das im Voraus nicht bekannt ist.

Das obige ist der detaillierte Inhalt vonWie kann ich dynamisch bestimmte Spalten in LINQ auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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