首頁 > 後端開發 > C#.Net教程 > C#.NET: List轉Dictionary>

C#.NET: List轉Dictionary>

黄舟
發布: 2017-03-04 10:30:13
原創
3286 人瀏覽過

C#.NET 利用ToDictionary(),GroupBy(),可以將List轉換成Dictionary,主需要一行程式碼!

先看一下需求,已知cars,等於:

1

2

3

4

5

6

7

8

    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,方法如下:

1

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

登入後複製
登入後複製

這樣保證能正確轉換的前提為,id在列表中沒有重複值。如果有重複的,會拋出向字典中添加重複值的異常。

2)我想以type為鍵,值car的List的typeDict,方法如下:

1

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

登入後複製
登入後複製

逐步解釋:
第一步分組

1

2

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;

//其中string等于car.type,也就是分组的键

登入後複製
登入後複製

第二步將IEnumerable型別轉換為字典,選取合適的鍵,

1

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

登入後複製
登入後複製

這種轉換程式碼簡介,比以下foreach遍歷得到以car.type的字典簡潔許多:

1

2

3

4

5

6

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(),可以將List轉換為Dictionary,主需要一行程式碼!

先看一下需求,已知cars,等於:

1

2

3

4

5

6

7

8

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,方法如下:

1

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

登入後複製
登入後複製

這樣保證能正確轉換的前提為,id在列表中沒有重複值。如果有重複的,會拋出向字典中添加重複值的異常。

2)我想以type為鍵,值car的List的typeDict,方法如下:

1

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

登入後複製
登入後複製

逐步解釋:
第一步分組

1

2

cars.GroupBy(car=>car.type) //返回的结果类型为: //IEnumerable<IGroup<string,car>>;

//其中string等于car.type,也就是分组的键

登入後複製
登入後複製

第二步將IEnumerable型別轉換為字典,選取合適的鍵,

1

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

登入後複製
登入後複製

這種轉換程式碼簡介,比以下foreach遍歷得到以car.type的字典簡潔許多:

1

2

3

4

5

6

7

8

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

}

登入後複製


#
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板