在 LINQ 中使用表達式樹選擇匿名物件
表達式樹提供了一個強大的機制來建立動態 LINQ 查詢。但是,產生選擇匿名物件的查詢可能具有挑戰性,因為某些重載可能無法適應多個屬性的規範。
多屬性匿名物件選擇
為了減輕這項挑戰,可以利用反射發射和輔助類。以下程式碼展示了 SelectDynamic 方法的範例實現,該方法能夠根據屬性集合動態產生匿名類型:
<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames) { ... }</string></code>
動態型別產生
SelectDynamic 方法使用 LinqRuntimeTypeBuilder 類別根據屬性集合建構動態類型。這允許在 select lambda 表達式中指定多個屬性。
匿名型別建立
透過利用 MemberBindings,選擇器運算式使用所需屬性初始化匿名類型。這些綁定建立了來源項和屬性值之間的關係。
查詢執行
然後使用提供者的 CreateQuery 方法利用選擇器運算式建立新查詢。此查詢從原始來源選擇動態匿名物件。
範例用法
以下程式碼示範了 SelectDynamic 方法的用法:
<code>var v = from c in Countries where c.City == "London" select new { c.Name, c.Population };</code>
其他注意事項
以上是如何在 LINQ 中使用表達式樹動態選擇具有多個屬性的匿名物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!