利用表達式樹動態選擇LINQ匿名型別屬性
使用表達式樹建立複雜的LINQ查詢來動態選擇匿名類型是可行的。雖然選擇單一屬性的查詢很容易生成,但在匿名類型中選擇多個屬性則需要不同的方法。
為此,可以使用反射發射和輔助類別在運行時動態定義匿名類型。以下是一個範例:
SelectDynamic擴充方法:
<code>public static IQueryable SelectDynamic(this IQueryable source, IEnumerable<string> fieldNames) { ... // 实现细节 }</code>
LinqRuntimeTypeBuilder輔助類:
<code>public static class LinqRuntimeTypeBuilder { ... // 实现细节 }</code>
這種方法允許創建複雜的動態選擇,而無需Intellisense支持,這對於後期綁定資料控制項非常有用。
以下範例產生查詢,從City等於「London」的Countries實體中選擇Name和Population屬性:
<code>var v = Countries.Where(c => c.City == "London") .SelectDynamic(new[] { "Name", "Population" });</code>
結果,變數v將包含一個具有Name和Population屬性的動態類型。
以上是如何使用表達式樹在 LINQ 中動態選擇匿名類型屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!