考慮三類:鑄造在LINQ到實體查詢
public class MyChildDto
{
public int Id {get; set;}
public string Name {get; set;}
}
public class MyChildDtos : List<MyChildDto>
{
public MyChildDtos(List<MyChildDto> myChildDtos)
: base(myChildDtos)
{
}
}
public class MyParentDto
{
public int Id {get; set;}
public MyChildDtos Children {get; set;}
}
我也有實體的集合,我想查詢和映射到父對象,像這樣:
public MyParentDto GetParentDto(int id)
{
return DbContext.MyParentEntities.Select(p => new MyParentDto
{
Id = p.Id,
Children = p.MyChildEntities.Select(c => new MyChildDto
{
Id = c.Id,
Name = c.Name
}).ToList()
});
}
(假設爲參數的緣故所需要的MyChildDtos類;我只呈現一個簡化的例子。)
我遇到的問題是轉換的0的結果選擇適當的類型。使用上面的代碼,我收到一個錯誤,該類型不能隱式轉換(從List<MyChildDto>
到MyChildDtos
),但存在明確的轉換。但是,當我嘗試顯式轉換時,我收到一個錯誤,「LINQ to Entities只支持投射EDM原語或枚舉類型」。同樣,如果我試圖明確構建MyChildDtos
列表(即將選擇結果傳遞到ctor),我會收到一個錯誤,表示Linq-to-Entities只支持使用查詢中的默認構造函數。
是否有某種方法可以將List<MyChildDto>
結果從Linq-to-Entities查詢中轉換爲MyChildDtos
(List<MyChildDto>
子類型)?
你試過超載隱式轉換操作符? (即公共靜態隱式操作符MyChildDtos(List item){return new MyChildDtos(item);}) –
dodald
2014-09-19 20:05:10