C#.NET: List转Dictionary>

黄舟
黄舟オリジナル
2017-03-04 10:30:133174ブラウズ

C#.NET は ToDictionary() と GroupBy() を使用してリストを辞書に変換します。必要なコードは 1 行だけです。

まず要件を見てください:

                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) ID をキーとして使用し、値を Car として使用して辞書 idCarDict に変換します。

var idCarDict = cars.ToDictionary(car=>car.id);

正しい変換を保証するための前提条件は、リスト内に重複する ID 値がないことです。重複がある場合、重複した値を辞書に追加するために例外がスローされます。

2) type をキーとして使用し、車のリストの typeDict を使用します。方法は次のとおりです。

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

ステップバイステップの説明:
最初のステップはグループ化です

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

2 番目のステップは次のとおりです。 IEnumerable 型を辞書に変換し、適切なキーを選択するには、

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

この変換コードの導入は、car.type で辞書を取得する次の foreach トラバーサルよりもはるかに簡単です:

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 ToDictionary()、GroupBy を使用する()、リストは 1 行のコードのみで辞書に変換できます。

まず、既知の車は次のとおりです:

         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) ID をキーとして使用し、値を Car として辞書 idCarDict に変換したいと思います。メソッドは次のとおりです。

var idCarDict = cars.ToDictionary(car=>car.id);

正しい変換を保証するための前提条件は、ID リストに重複する値がないことです。重複がある場合、重複した値を辞書に追加するために例外がスローされます。

2) type をキーとして使用し、値 car をリストの typeDict として使用したいと思います。方法は次のとおりです。

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

ステップバイステップの説明:

最初のステップはグループ化です

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

2 番目のステップです。 IEnumerable 型を辞書に変換し、適切なキーを選択することです。

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

この変換コードの導入は、car.type で辞書を取得する次の foreach トラバーサルよりもはるかに簡単です。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。