首頁 >後端開發 >C++ >如何在 LINQ 中使用表達式樹動態選擇具有多個屬性的匿名物件?

如何在 LINQ 中使用表達式樹動態選擇具有多個屬性的匿名物件?

Patricia Arquette
Patricia Arquette原創
2025-01-22 19:07:09430瀏覽

How Can I Use Expression Trees to Dynamically Select Anonymous Objects with Multiple Properties in LINQ?

在 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>

其他注意事項

  • 由於動態類型是在運行時創建的,因此 IntelliSense 對於動態類型不可用。
  • 當使用後期綁定資料控制項時,這種方法特別有價值。

以上是如何在 LINQ 中使用表達式樹動態選擇具有多個屬性的匿名物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn