2015-03-05 5 views
0

У меня есть список животных, который состоит из типа животных, у каждого животного есть список посещений, где информация добавляется для каждого посещения, когда он посещает лечение. Как-то я не могу понять, как добавить список посещений в список животных 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 
+0

Какое 'Animal' именно вы хотите добавить' listHealth' в? – Corak

+0

'listHealth.Add (новый Animal() {typeOfAnimal =" Cat ", listHealth = da});' –

+0

Насколько я вижу, 'animalList' может содержать только элементы Animal', а' HealthList' не является 'Animal', поэтому вы можете добавить такие элементы (через' AddRange') в список directty. –

ответ

3
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; } 
} 
+1

Возможно, вы захотите изменить тип «TypeOfAnimal» на перечисление, содержащее все типы животных –

+1

(ирония). Список закрытых животных - это лучшее, поэтому, когда кто-то решает сделать проверку здоровья на своем птеродактиле, и он обнаруживает, что он может 't, он должен будет заплатить вам, чтобы изменить вашу программу :) – xanatos

+0

@xanatos oh yeah =) хорошее мышление! –

3
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" } }; 
0

Можно добавить один список к другому:

list1.AddRange(list2); 

См. Также: https://msdn.microsoft.com/en-us/library/z883w3dc%28v=vs.110%29.aspx

Вы не можете добавлять списки другого типа в другой.

В вашем случае animalList имеет тип Generic Type Animal, и вы пытаетесь добавить к нему весь список.

+1

'HealthList' не является подтипом' Animal'. – Corak

Смежные вопросы