C#.NET: List转Dictionary>

黄舟
Freigeben: 2017-03-04 10:30:13
Original
3148 Leute haben es durchsucht

C#.NET verwendet ToDictionary() und GroupBy(), um List in Dictionary zu konvertieren, was nur eine Codezeile erfordert!

Schauen Sie sich zunächst die Anforderungen an. Die bekannten Autos sind gleich:

                List<Car> cars = new List<Car>(){                
                new Car(1,"audiA6","private"),                
                new Car(2,"futon","merchant"),                
                new Car(3,"feiren","bike"),                
                new Car(4,"bukon","private"),                
                new Car(5,"baoma","private"),                
                new Car(6,"dayun","merchant")
            };
Nach dem Login kopieren

1) Ich möchte die ID als Schlüssel und den Wert als Auto zum Konvertieren verwenden es in ein Wörterbuch idCarDict. Die Methode ist wie folgt:

var idCarDict = cars.ToDictionary(car=>car.id);
Nach dem Login kopieren
Nach dem Login kopieren

Voraussetzung für eine korrekte Konvertierung ist, dass die Liste keine doppelten ID-Werte enthält. Wenn Duplikate vorhanden sind, wird eine Ausnahme ausgelöst, um dem Wörterbuch doppelte Werte hinzuzufügen.

2) Ich möchte type als Schlüssel und typeDict der Autoliste verwenden. Die Methode ist wie folgt:

Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
Nach dem Login kopieren
Nach dem Login kopieren

Schritt-für-Schritt-Erklärung:
Der erste Schritt ist die Gruppierung

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;
//其中string等于car.type,也就是分组的键
Nach dem Login kopieren
Nach dem Login kopieren

Der zweite Schritt besteht darin, den IEnumerable-Typ in ein Wörterbuch umzuwandeln und den entsprechenden Schlüssel auszuwählen

ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
Nach dem Login kopieren
Nach dem Login kopieren

Die Einführung dieses Konvertierungscodes ist viel einfacher als die folgende foreach-Durchquerung, um ein Wörterbuch mit car.type zu erhalten:

var dict = new Dictionary<string,List<Car>>();
foreach(var car in cars)
{  if(dict.Contains(car.type))
     dict[car.type].Add(car);
  else
    dict.Add(car.type,new List<Car>(){car}));}
Nach dem Login kopieren

C#.NET verwendet ToDictionary() und GroupBy(), um List in Dictionary zu konvertieren, was nur eine Codezeile erfordert!

Schauen Sie sich zunächst die Anforderungen an. Die bekannten Autos sind gleich:

         List<Car> cars = new List<Car>(){
                new Car(1,"audiA6","private"),
                new Car(2,"futon","merchant"),
                new Car(3,"feiren","bike"),
                new Car(4,"bukon","private"),
                new Car(5,"baoma","private"),
                new Car(6,"dayun","merchant")
            };
Nach dem Login kopieren

1) Ich möchte id als Schlüssel und den Wert als Car verwenden, um es in ein umzuwandeln Wörterbuch idCarDict. Die Methode lautet wie folgt:

var idCarDict = cars.ToDictionary(car=>car.id);
Nach dem Login kopieren
Nach dem Login kopieren

Voraussetzung für eine korrekte Konvertierung ist, dass die Liste keine doppelten ID-Werte enthält. Wenn Duplikate vorhanden sind, wird eine Ausnahme ausgelöst, um dem Wörterbuch doppelte Werte hinzuzufügen.

2) Ich möchte type als Schlüssel und typeDict der Autoliste verwenden. Die Methode ist wie folgt:

Dictionary<string, List<Car>> typeCarDict = cars.GroupBy(car => car.type).ToDictionary(r => r.Key, r => r.ToList());
Nach dem Login kopieren
Nach dem Login kopieren

Schritt-für-Schritt-Erklärung:
Der erste Schritt ist die Gruppierung

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;
//其中string等于car.type,也就是分组的键
Nach dem Login kopieren
Nach dem Login kopieren

Der zweite Schritt besteht darin, den IEnumerable-Typ in ein Wörterbuch umzuwandeln und den entsprechenden Schlüssel auszuwählen

ToDictionary(r=>r.Key,r=>r.ToList());//r参数代表分组对象,r.Key便是car.type;//r.ToList()操作后将分组对象转化为List对象
Nach dem Login kopieren
Nach dem Login kopieren

Die Einführung dieses Konvertierungscodes ist viel einfacher als die folgende foreach-Durchquerung, um ein Wörterbuch mit car.type zu erhalten:

var dict = new Dictionary<string,List<Car>>();
foreach(var car in cars)
{
  if(dict.Contains(car.type))
     dict[car.type].Add(car);
  else
    dict.Add(car.type,new List<Car>(){car}));
}
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage