1

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

有人可以帮助我吗?

4

2 回答 2

1

希望这是您正在寻找的:

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

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

public List<Animal> getAnimals()
{
    return DogList.Union<Animal>(CatList)
                  .ToList();
}
于 2013-04-19T11:00:41.207 回答
1

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

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

public List<Animal> getAnimals() 
{
    return DogList.OfType<Animal>().Concat(CatList).ToList()
}
于 2013-04-19T11:01:16.600 回答