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
Patricia ArquetteOriginal
2025-01-28 20:08:12331Durchsuche

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
<code class="language-csharp">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();
}</code>
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

<code class="language-csharp">var result = list.Select(CreateNewStatement("Field1, Field2"));</code>

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!

Stellungnahme:
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