透過 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中文網其他相關文章!