2015-11-13 104 views
2

我有一个与所有者和车辆表的数据库与一对多的关系。我想获取所有车辆详细信息并将每个车主映射到每辆车,但我必须将查询映射到BDO。不确定LINQ语法,但我有下面的代码。如何正确(深)用C#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与细节:

只有参数构造函数初始化,并在LINQ 支持到实体

我已经习惯了Java和新的LINQ所以不知道如何做到这一点,任何帮助将不胜感激。

+1

你用'VehicleBDO'做同样的事情:使用无参数的构造函数和属性设置器。 – Jon

回答

3

它要你做这样的事情:(我不知道OwnerBDO属性名称,所以我猜)

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

+0

所以你不需要带对象初始值设定项的圆括号。 – CodeNotFound

+1

当你意识到答案是多么明显时,这种可怕的耻辱。非常感谢你。也向Jon致谢。 – Gary

+0

@GaryM如果你仔细阅读错误信息,你将会做什么以及在Google上搜索什么=>“对象初始值设定项”,“无参数”c# – CodeNotFound