LINQ错误初始化成员声明符无效

我是一个相当初级的C#开发人员,请原谅我,如果这是微不足道的,但我在下面指出的代码行中提出了这个错误“无效的初始化成员声明符”。

有人可以解释这意味着什么,我如何解决/实现这个结果? 我的所有数据注释都已在PODetail中应用一次,这就是为什么我不想在这里重复这些属性。

public class PODetailsListViewModel : IViewModelList, IEntity { public int Id { get; set; } public string EntityDescription { get { return this.Id.ToString(); } } public PODetail PODetail { get; set; } public IEnumerable ConvertClassToViewModel(IEnumerable poDetails) { IEnumerable contactGrid = from l in poDetails.ToList() select new PODetailsListViewModel() { Id = l.Id, PODetail.POHeaderId = l.POHeaderId, <===== ERROR on this Line .... }; return contactGrid; } 

您无法在类初始值设定项中访问复杂对象属性(因为您正在尝试使用PODetail.POHeaderId属性)。 您可能必须实现一个小的解决方法:使用您已有的信息创建一个匿名对象的集合,然后重新构建PODetailsListViewModel的具体列表:

 var contactGrid = from l in poDetails.ToList() select new { { Id = l.Id, POHeaderId = l.POHeaderId ... }; 

然后您可以手动重新创建您要查找的内容:

 var someNewCollection = New List(Of PODetailsListViewModel); foreach (var item in contactGrid) var model = new PODetailsListViewModel() { Id = item.Id }; model.PODetail = new PODetailModel() /* replace with actual class name */ { POHeaderId = item.POHeaderId }; someNewCollection.Add(model); } return someNewCollection; 

编辑 :或许你可以嵌套初始化器:

 var contactGrid = from l in poDetails.ToList() select new PODetailsListViewModel() { { Id = l.Id, PODetail = new PODetailModel() { POHeaderId = l.POHeaderId }, ... };