是否可以选择单个对象并使用单个Lambda表达式填充包含的IEnumerable属性?
这样的事情:
var someViewModel = _repository.Table.Where(x => x.Id == someId)
.Select(new ListViewModel(){
GroupId = x.Group.Id,
GroupTitle = x.Group.Title
List = ?? // Select new SubViewModel and add it to IEnumerable<SubViewModel>
})
我所追求的结果是一个包含3个属性的新对象(在本例中为ListViewModel)。 “列表”是新选择的对象的集合。
这可能吗?我是从错误的角度来看这个吗?
谢谢!
更新
让我再试一次:)请记住,我的命名在这里是虚构的。鉴于以下两个类,我想使用Lambda表达式构造一个DB查询,该表达式创建一个包含“SubViewModel”集合的“ListViewModel”。这有助于澄清吗?
public class SubViewModel
{
public int Id { get; set; }
public string Title { get; set; }
}
public class ListViewModel
{
public int GroupId { get; set; }
public string GroupTitle { get; set; }
public IEnumerable<SubViewModel> List { get; set; }
}
答案 0 :(得分:1)
我不确定我是否正确理解了您的问题,但这就是我的想法,您需要创建一个新的IEnumberable并将该项目添加到该集合中。
var someViewModel = _repository.Table.Where(x => x.Id == someId)
.Select(new ListViewModel()
{
GroupId = x.Group.Id,
GroupTitle = x.Group.Title
List = new List<SubViewModel> { new SubViewModel(x) }
});