Lambda表达式 - 选择具有IEnumerable<>的单个对象属性

时间:2014-01-30 21:58:03

标签: c# linq lambda

是否可以选择单个对象并使用单个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; }
}

1 个答案:

答案 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) }
                            });