Heim >Backend-Entwicklung >C++ >Wie kann ich dynamisch bestimmte Spalten in LINQ auswählen?
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 manverwendet
<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!