c# - 如何使用 C# LINQ 正确(深度)映射复杂对象?

标签 c# entity-framework linq

我有一个数据库,其中包含具有一对多关系的所有者和车辆表。我想要获取所有车辆详细信息并将每个车主映射到每辆车,但我必须将查询映射到 BDO。不确定 LINQ 语法,但我有下面的代码。

using (var databaseContext = new DBConnection()) {
   var vehicles = (from Vehicle in databaseContext.Vehicles
                         select Vehicle);

   return vehicles.Select(x => new VehicleBDO() {
      Id = x.Id,
      // ... more simple data types
      Owner = new OwnerBDO(
         x.Owner.Id,
         x.Owner.Name)
   }).ToList();
}

如图所示创建一个新的ownerBDO会给我一个MethodNotSupportedException,其中包含详细信息:

Only parameterless constructors and initializers are supported in LINQ to Entities

我习惯了 Java,对 LINQ 还很陌生,所以不知道如何正确地做到这一点,任何帮助将不胜感激。

最佳答案

它希望你做这样的事情:

Owner = new OwnerBDO() { Id = x.Owner.Id, name = x.Owner.Name},

(我不知道 OwnerBDO 的属性名称,所以我猜测。)

关于c# - 如何使用 C# LINQ 正确(深度)映射复杂对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701613/

相关文章:

c# - 将 3 维字节数组转换为单字节数组

c# - 如何使用动态生成的 ADO.NET 实体数据模型代码进行单元测试

vb.net - LINQ 中的 ArrayList 问题

c# - 排序列表<int>

c# - Entity Framework 6 单元测试 (NSubstitute) - 如何测试带有子对象的对象在未请求子对象时不返回子对象

c# - 使用 LINQ 从 RegionInfo 获取 CultureInfo

c# - 如何在 imagebutton 中显示来自 URL 的图像 - xamarin Android

c# - 如何显示登录窗口和隐藏主窗口

C# Int32 : m_value

c# - DbExpressionBinding 需要一个带有集合 ResultType 的输入表达式