[英]Select query on type to transform it into its sub type using Linq
我正在研究ASP.Net核心項目,並且我有一個如下模型:
Class abcde
{
int a {get;set;}
int b {get;set;}
int c {get;set;}
int d {get;set;}
int d {get;set;}
}
在特定視圖中,我只需要上述定義的模型的屬性a和b。 因此,我只定義了一個ViewModel類(放入另一個名稱空間),如下所示:
Class ab
{
int a {get;set;}
int b {get;set;}
}
現在在控制器中,我正在進行選擇查詢,我打算僅選擇a和b屬性。 因為這些是我要在視圖中顯示的唯一屬性。 因此,基本上我的查詢必須是:
var objects = _context.abcde.Select( x=> new {x.a, x.b}).ToArray()
這里的問題是我得到了一個匿名類型的數組,我需要手動將其映射到我的viewmodel類ab。 在這種情況下,我必須要有一個循環才能將每個結果集手動轉換為ViewModel。
查看Select函數的簽名
可枚舉選擇TSource,TResult
看來,函數本身可以完成轉換,但是我找不到任何示例。 我在這里可能有一個錯誤的想法。 您能否建議處理這種情況的方法。 我相信這將是非常普遍的情況。 提前致謝。
這里的問題是我得到了一個匿名類型的數組,我需要手動將其映射到我的viewmodel類ab。 在這種情況下,我必須要有一個循環才能將每個結果集手動轉換為ViewModel。
因此,只需像這樣使用ab
類來投影即可:
x => new ab() { a = x.a, b = x.b }
而不是使用匿名類型:
x => new { x.a, x.b }
因此,您的最終查詢將如下所示:
var objects = _context.abcde.Select(x => new ab { a = x.a, b = x.b }).ToArray()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.