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

如何使用 LINQ 表達式樹動態選擇具有多個屬性的匿名類型?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-22 19:21:09802瀏覽

How Can I Dynamically Select Anonymous Types with Multiple Properties Using LINQ Expression Trees?

透過 LINQ 表達式樹動態選擇具有多個屬性的匿名型別

本指南詳細介紹如何建立 LINQ 表達式樹以動態選擇具有多個屬性的匿名類型。

問題:

建立 LINQ 表達式樹來選擇單一屬性以外的匿名類型是一項挑戰。 當需要指定多個屬性時,標準方法通常會出現不足。

方法:

此解決方案使用 Reflection Emit 和輔助類別(如下所示)根據提供的屬性清單產生動態類型。 這使得可以選擇具有多個屬性的匿名類型。

動態型別建立助理類別:

<code class="language-csharp">public static class LinqRuntimeTypeBuilder
{
    // ... (Implementation details omitted for brevity)
}</code>

動態選擇的擴充方法:

<code class="language-csharp">public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames)
{
    // ... (Implementation details omitted for brevity)
}</code>

用法範例:

這個擴充方法可以添加到您的專案中並像這樣使用:

<code class="language-csharp">var v = from c in Countries
        where c.City == "London"
        select new { c.Name, c.Population };</code>

限制:

由於類型是在運行時創建的,因此 IntelliSense 將不可用。 但是,此方法對於需要後期綁定資料綁定的情況非常有用。

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

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