Wenn die Liste unbekannt ist, kann die spezifische Spalte in der LINQ -Abfrage eine Herausforderung sein. Es gibt jedoch eine Lösung, bei der der an die Auswahl übergebene Lambda -Ausdruck beteiligt ist.
Betrachten Sie die folgende Datenklasse:
Um eine bestimmte Spalte dynamisch auszuwählen, können Sie die Methode für die CreateNewStatement verwenden, um dynamisch Lambda -Ausdrücke zu erstellen:
<code class="language-csharp">public class Data { public string Field1 { get; set; } public string Field2 { get; set; } public string Field3 { get; set; } public string Field4 { get; set; } public string Field5 { get; set; } }</code>
Diese Methode verwendet die Liste des Kommas, um die Liste als Zeichenfolge zu trennen, und generiert dynamisch einen Lambda -Ausdruck.
<code class="language-csharp">private 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); var lambda = Expression.Lambda<Func<Data, Data>>(xInit, xParameter); return lambda.Compile(); }</code>
Dann können Sie mit der Methode für die CreateNewStatement Lambda -Ausdrücke erstellen und sie verabschieden, um:
auszuwählen:
<code class="language-csharp">var result = list.Select(CreateNewStatement("Field1, Field2"));</code>
Das obige ist der detaillierte Inhalt vonWie kann ich Spalten in LINQ -Abfragen dynamisch auswählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!