我正在尝试根据孩子的总和来检索父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;
}
}
有人可以帮助我吗?
答案 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()
}