返回由 Child's One 的联合创建的基本集合

本文关键字:创建 集合 One Child 返回 | 更新日期: 2023-09-27 18:09:55

我正在尝试根据孩子的总和检索父 obj 的集合。前任:3 类

Animal,  
Dog:Animal,  
Cat:Animal

让我们尝试用一些代码来解释:

Class something{  
    public List <Dog> DogList{get; set;};  
    public List <Cat> CatList{get; set;};
    Public List <Animal> getAnimals{
        get{ return DogList+CatList; }  
    }  
} 

getAnimals应该返回 2 个子列表的总和

Public List <Animal> getAnimals{
    get{
        List<Animal> AnimalList = new List<Animal>();
        foreach (Animal child in DogList)
            AnimalList.add(child);
        foreach(Animal child in CatList)
            AnimalList.add(child);
        return AnimalList;
        }
    }

有人可以帮助我吗?

返回由 Child's One 的联合创建的基本集合

希望这就是你要找的:

public List<Animal> getAnimals()
{
    return DogList.Concat<Animal>(CatList)
                  .ToList();
}

或者如果您想返回独特的猫和独特的狗:

public List<Animal> getAnimals()
{
    return DogList.Union<Animal>(CatList)
                  .ToList();
}

我想你可能是指这种方法,[Enumerable.Concat<T>][1]。它是任何IEnumerable<T>上的扩展方法,List<T>是,它允许您获取两个集合,并生成一个新的IEnumerable<T>,该将"包含"两个原始集合的内容。

请注意,Concat 不是复制值的集合,它将是您只能枚举的集合(如 foreach (,当您这样做时,它将枚举两个原始集合并生成所有元素。

public List<Animal> getAnimals() 
{
    return DogList.OfType<Animal>().Concat(CatList).ToList()
}