2017-02-02 8 views
3

Ich muss eine Liste der vom Benutzer eingegebenen Artikel speichern. Diesen Elementen können mehrere Klassifizierungen zugeordnet sein, und diese Klassifizierungen können ihre eigenen Eigenschaften haben. Was wäre der beste Weg, Daten auf diese Weise zu speichern?Die beste Möglichkeit, eine Liste von Artikeln und Eigenschaften in einer anderen Liste von Artikeln zu speichern

Nur für ein Beispiel werde ich Autos benutzen. Der Benutzer gibt an, dass sie einen Ford haben. Dann gibt der Benutzer an, welche Ford-Autos sie haben (könnte Mustang, Fokus, usw. sein). Dann werden die Kosten für den Mustang, Focus oder was auch immer eingegeben. Also würden wir mit einer Liste von Ford-Autos enden, jede mit ihren eigenen Kosten.

Dann wird der Benutzer GM eingeben und eine andere Liste des gleichen Typs starten. Dies ist, wie ich die Liste zu sehen bin:

Ford -> Mustang -> $30000 
    -> Focus -> $20000 
    -> F150 -> $40000 

GM -> Camaro -> $30000 
    -> Corvette -> $50000 

Ich dachte über verschachtelten Arrays verwenden, aber das scheint nicht wie eine effiziente Art und Weise zu handhaben, weil es so aussieht, ich Nest 3 Arrays tief haben würde . Wenn ich ein Array von Objekten mache, muss ich den Hersteller für jedes Auto duplizieren (mit meinem Beispiel) und ich möchte nur, dass der Benutzer einen Eintrag für jeden Hersteller sieht.

+2

dies ist nicht nur eine Liste von Objekte mit jeweils drei Eigenschaften: Marke, Modell und Preis? – dlatikay

+2

Verwenden Sie eine Klasse für Auto mit Marke, Modell und Preis. Dann verwenden Sie eine "Liste ", um alle hinzuzufügen. Nachdem Sie diese Liste gruppiert haben, können Sie die Daten so anzeigen, wie Sie möchten ... – Pikoh

+0

Sie müssen das Modell aus der Sicht aufteilen. Sie haben Entitäten mit Eigenschaften => Macht einen guten Kandidaten für eine Klasse. Dann hast du die Aussicht. Das ist eine ganz andere Geschichte. Du könntest zum Beispiel die Eigenschaften gruppieren ... – Fildor

Antwort

1

Tun Sie einfach etwas mit einem Automodell und dann ein CarView-Modell, um eine li bereitzustellen st von Autos, die Sie nach Bedarf anzeigen können.

public class Car 
    { 
     public string Brand { get; set; } 
     public string Model { get; set; } 
     public decimal Price { get; set; } 
    } 

    public class CarView 
    { 
     public List<Car> CarList { get; set; } 
    } 

Sie können dann bevölkern den CarList mit einer Reihe von Autos und zeigen die, die Sie wollen:

 var mustang = new Car 
     { 
      Brand = "Ford", 
      Model = "Mustang", 
      Price = 30000.00M 
     }; 

     var focus = new Car 
     { 
      Brand = "Ford", 
      Model = "Focus", 
      Price = 20000.00M 
     }; 

     var corvette = new Car 
     { 
      Brand = "GM", 
      Model = "Corvette", 
      Price = 50000.00M 
     }; 

     CarView dealerCars = new CarView() 
     { 
      CarList = new List<Car>() 
     };   
     dealerCars.CarList.Add(mustang); 
     dealerCars.CarList.Add(focus); 
     dealerCars.CarList.Add(corvette); 

     var filteredList = dealerCars.CarList.Where(item => item.Brand == "Ford"); 

     foreach(var car in filteredList) 
     { 
      Console.WriteLine("Brand: {0}, Model: {1}, Price: ${2}", car.Brand, car.Model, car.Price);     
     } 

     Console.ReadLine(); 

Das Ergebnis:

enter image description here

+0

Das funktioniert für mich, ich muss nur herausfinden, wie man es jetzt in eine Listview umbindet und nur eine Eigenschaft anzeigt. Aber das ist eine andere Frage für eine andere Zeit. – reptiletim

2

Sie möchten Ihre eigene Klasse/Struktur für Ihr Objekt erstellen:

public class Car 
{ 
    public string Brand { get; set; } 
    public string Model { get; set; } 
    public int Price { get; set; } 
} 

Anwendungsbeispiel:

var carsDict = new Dictionary<string, List<CarDetails>>() 
{ 
    { "Ford", new List<CarDetails>() }, 
    { "GM", new List<CarDetails>() }, 
}; 

var mustang = new CarDetails 
{ 
    Brand = "Ford", 
    Model = "Mustang", 
    Price = 30000 
} 

carsDict["Ford"].Add(mustang); 
carsDict["Ford"].Add(new CarDetails { Brand="Ford", Model="Focus", Price=20000 }); 

Wenn Sie die alle Autos Ford sagen bekommen lassen möchten, können Sie einfach erhalten die liste:

Verwandte Themen