C# LINQ错误无效的初始值设定项成员声明符
我是一个相当初级的C开发人员,请原谅,如果这是微不足道的,但是我在下面指出的代码行中遇到了这个错误,即无效的初始化器成员声明符 有人能解释一下这意味着什么以及我如何解决/实现这一结果吗?我所有的数据注释都已经在PODetail中应用了一次,这就是为什么我不想在这里重复这些属性C# LINQ错误无效的初始值设定项成员声明符,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,我是一个相当初级的C开发人员,请原谅,如果这是微不足道的,但是我在下面指出的代码行中遇到了这个错误,即无效的初始化器成员声明符 有人能解释一下这意味着什么以及我如何解决/实现这一结果吗?我所有的数据注释都已经在PODetail中应用了一次,这就是为什么我不想在这里重复这些属性 public class PODetailsListViewModel : IViewModelList<PODetail, PODetailsListViewModel>, IEntity {
public class PODetailsListViewModel : IViewModelList<PODetail, PODetailsListViewModel>, IEntity
{
public int Id { get; set; }
public string EntityDescription
{
get
{ return this.Id.ToString(); }
}
public PODetail PODetail { get; set; }
public IEnumerable<PODetailsListViewModel> ConvertClassToViewModel(IEnumerable<PODetail> poDetails)
{
IEnumerable<PODetailsListViewModel> contactGrid =
from l in poDetails.ToList()
select new PODetailsListViewModel()
{
Id = l.Id,
PODetail.POHeaderId = l.POHeaderId, <===== ERROR on this Line
....
};
return contactGrid;
}
当您尝试使用PODetail.POHeaderId属性时,无法在这样的类初始值设定项中访问复杂对象属性。您可能需要实现一个小的解决方法:使用您已有的信息创建一个匿名对象集合,然后立即重建PODetailsListViewModels的具体列表:
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
},
...
};
当您尝试使用PODetail.POHeaderId属性时,无法在这样的类初始值设定项中访问复杂对象属性。您可能需要实现一个小的解决方法:使用您已有的信息创建一个匿名对象集合,然后立即重建PODetailsListViewModels的具体列表:
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
},
...
};
本能地我认为你需要创建一个PODetail实例,比如PODetail=new-PODetail{POHeaderId=l.POHeaderId},。本能地我认为你需要创建一个PODetail实例,比如PODetail=new-PODetail{POHeaderId=l.POHeaderId},.Cory,谢谢你提供的详细信息。嵌套工作得非常完美…直到我尝试在我的剑道UI网格中使用该视图模型…然后我再次遇到空引用错误。现在我已经放弃了,只是恢复到在视图模型中复制我的属性。也就是说,这就是我问题的答案。很好的例子帮助我解决了我的问题,谢谢你提供的详细信息。嵌套工作得非常完美…直到我尝试在我的剑道UI网格中使用该视图模型…然后我再次遇到空引用错误。现在我已经放弃了,只是恢复到在视图模型中复制我的属性。也就是说,这就是我问题的答案。很好的例子帮助我解决了我的问题