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

问题描述 投票:0回答:1

是否可以选择单个对象并使用单个 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 表达式构造一个数据库查询,该表达式创建一个包含“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; }
}
c# linq lambda
1个回答
1
投票

我不确定我是否正确理解你的问题,但这就是我的想法,你需要创建一个新的

IEnumerable<SubViewModel>
并将该项目添加到该集合中。

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) }
                            });
© www.soinside.com 2019 - 2024. All rights reserved.