返回由孩子的联合制作的基本集合

时间:2013-04-19 10:55:38

标签: c# collections

我正在尝试根据孩子的总和来检索父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;
        }
    }

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

希望这就是你要找的东西:

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

或者如果你想归还独特的猫和独特的狗:

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

答案 1 :(得分:1)

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

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

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