Cha*_*son 1 c# linq asp.net-mvc
我是一个相当初级的C#开发人员,请原谅我,如果这是微不足道的,但我在下面指出的代码行中提出了这个错误"无效的初始化成员声明符".
有人可以解释这意味着什么,我如何解决/实现这个结果?我的所有数据注释都已在PODetail中应用一次,这就是为什么我不想在这里重复这些属性.
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;
}
Run Code Online (Sandbox Code Playgroud)
您无法在类初始值设定项中访问复杂的对象属性(因为您正在尝试使用该PODetail.POHeaderId
属性).您可能必须实现一个小的解决方法:使用您已有的信息创建一个匿名对象的集合,然后重新构建一个具体的PODetailsListViewModel
s 列表:
var contactGrid = from l in poDetails.ToList()
select new {
{
Id = l.Id,
POHeaderId = l.POHeaderId
...
};
Run Code Online (Sandbox Code Playgroud)
然后您可以手动重新创建您要查找的内容:
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;
Run Code Online (Sandbox Code Playgroud)
编辑:或许您可以嵌套初始化器:
var contactGrid = from l in poDetails.ToList()
select new PODetailsListViewModel() {
{
Id = l.Id,
PODetail = new PODetailModel()
{
POHeaderId = l.POHeaderId
},
...
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6946 次 |
最近记录: |