LINQ-对于选择的每个项目,将值填充为一个未填充的属性

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

我正在使用我的Map方法从上下文类DTO创建Company对象,并且映射如下所示:

private CompDTO Map(Company company)
{
    return new CompDTO()
    {
        Id = company.Id,
        Title = company.Title,
        ParentCompanyId = company.ParentCompanyId,
    };
} 

CompDTO看起来像这样:

public class CompDTO
{
    public long Id { get; set; }
    public string Title { get; set; }
    public long? ParentCompanyId { get; set; }
    public bool HasChildrens { get; set; }
}

这是我调用Map方法的方式:

private IEnumerable<CompDTO> Map(IEnumerable<Company> companies)
{

    var result = companies.Select(c => Map(c));

     return result.Select(c => { c.HasChildrens = companies.Any(cc => cc.ParentCompanyId == c.Id)});
 }

在主映射之后,我试图为每个HasChildrens项目填充return result.Select中的compDTO属性。

但是它不起作用,因为它说:enter image description here

但是我想还有更深层次的问题,因为我只是这样添加测试:

return result.Select(c => { c.HasChildrens = true; }); 

它说:不能从用法中推断出方法的类型参数。

任何帮助都会很棒

c# linq linq-to-entities ienumerable
1个回答
1
投票

IEnumerable Select应该从输入中创建一个新序列。如果您只是想使用Select作为一个foreach来更改属性,则需要返回传递给lambda的对象

© www.soinside.com 2019 - 2024. All rights reserved.