如何通过LINQ将AnimalDomain与下属Animal合并为ExtendedAnimal?
动物领域与动物信息的LINQ合并实现
现有类定义
public class AnimalDomain { public string Domain { get; set; } List<Animal> Animals { get; set; } } public class Animal { public string Name { get; set; } } public class ExtendedAnimal { public string DomainName { get; set; } public string AnimalName { get; set; } }
需求描述
给定IEnumerable<AnimalDomain>类型的输入列表,需要将每个AnimalDomain中的Animal对象转换为包含其所属领域信息的ExtendedAnimal对象,实现MergeDomainAndAnimal方法中的LINQ查询逻辑。
实现代码
public IEnumerable<ExtendedAnimal> MergeDomainAndAnimal(IEnumerable<AnimalDomain> input) { return input.SelectMany(domain => domain.Animals.Select(animal => new ExtendedAnimal { DomainName = domain.Domain, AnimalName = animal.Name })); }
代码说明
SelectMany的作用:用于扁平化嵌套集合,遍历每个AnimalDomain对象,将其内部的Animals列表展开为一个连续的序列。- 对象映射:对每个展开的
Animal,创建对应的ExtendedAnimal实例,把所属领域的Domain值赋值给DomainName,Animal的Name赋值给AnimalName。
内容的提问来源于stack exchange,提问作者CoffeDeveloper
相关产品推荐
相关产品推荐

