Heim  >  Artikel  >  Backend-Entwicklung  >  C#.NET: List转Dictionary>

C#.NET: List转Dictionary>

黄舟
黄舟Original
2017-03-04 10:30:133147Durchsuche

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")
            };

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);

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());

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

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

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对象

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}));}

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")
            };

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);

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());

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

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

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对象

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}));
}


Stellungnahme:
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