簡體   English   中英

選擇類型查詢以使用Linq將其轉換為其子類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM