如何将列表添加到列表

How to add a List to a List

我有一个包含动物类型的动物列表,每只动物都有一个访问列表,每次访问治疗时都会在其中添加信息。 不知何故,我不知道如何将访问列表添加到动物列表 animalList.Add(listHealth) ??????不工作

List <Animal> animalList = new List <Animal>{typeOfAnimal = "Cat"};
DetailsOfAnimal da;

public class Animal
{
   public string typeOfAnimal;
   List <HealthList> listHealth = new List <HealthList>
}

public class HealthList
{
  public Date visit {get;set;}
  public string symptoms  {get;set;}
 }

.......
if new animal 
animalList = new List <Animal>;
// Add details to animal
da = new HealthList{visit = "2005-03-05", symptoms = "bad stomach"}
  List <HealthList> listHealth = new List <HealthList>
listHealth .Add(da);

animalList.Add(listHealth)   ???? Not working how to do that
Animal animal = new Animal();
animal.typeOfAnimal = "Cat";

da = new HealthList{visit = "2005-03-05", symptoms = "bad stomach"}
animal.listHealth.Add(da); // animal already has a non-null List<HealthList>

animalList.Add(animal);

您正在颠倒操作顺序...最好先创建 Animal(已经包含 listHealth),然后填充 listHealth。您可以 animalList.Add 在最后或紧跟在 new Animal() 之后。没有区别。

这是错误的:

List<Animal> animalList = new List <Animal>{typeOfAnimal = "Cat"};

应该是

List<Animal> animalList = new List<Animal>();

List<Animal> animalList = new List<Animal> { new Animal { typeOfAnimal = "Cat" } };

可以将一个列表添加到另一个列表:

    list1.AddRange(list2);

另见:https://msdn.microsoft.com/en-us/library/z883w3dc%28v=vs.110%29.aspx

您不能将不同类型的列表添加到另一个。

在你的例子中,animalList 是通用类型 Animal,而你正试图向它添加一个完整的 List。

class Program
{
    private static List<Animal> animalList = new List<Animal>();

    static void Main(string[] args)
    {
        Animal animal = new Animal() { TypeOfAnimal = "Dog" };
        // created a new animal

        animal.HealthList.Add(new Health() 
                              { 
                                  Visit = new DateTime(2014, 03, 05),
                                  Symptoms = "Herby is permanantly scratching his nose" 
                              });
        // added a new instance of Health to its HealthList
        // if you allready have a List<Health> the you can call
        // animal.HealthList.AddRange(theList); 
        // works as well with any other IEnumerable<Health>
        animalList.Add(animal);
    }
}

public class Animal
{
    private List<Health> healthList = new List<Health>(); 
    // the default accessmodifier for a classmember is private
    // you can write it too so you better understand what's going on

    public string TypeOfAnimal { get; set; }

    public List<Health> HealthList { get { return healthList; } }
    // add a readonly property for the list so you can access it from outside the class
}

public class Health 
// change this name for "HealthList" is missleading you
// because it would imply that it is a collection
{
    public DateTime Visit { get; set; }
    public string Symptoms { get; set; }
}