ListからDictionaryへ変換
ListからDictionaryを作成する場合に、foreachで回してDictionaryを作成したりしていませんか?(そもそも、最初からDictionaryで確保すればいいんですけど、、、どうしようもなくなっている場合もあると思います。)
C#3.0で追加されたLinqを使えば、簡単に変換することができるようになります。 まず、重複しない文字列のリストがあるとします。
var ballList = new Listそのリストから文字列の長さをDictonaryのValueとして保持する形を作るときに、 foreachを使用すると以下のようになります。()
{ "ball","superball","hyperball" };
var ballDics = new Dictionary(); foreach(var ball in ballList) { ballDics.Add(ball, ball.Length); }
ただし、処理の途中で、上記のようなコードがあると、Dictonary化したいという意図が伝わらないため、コードの可読性が落ちます。(メソッド化すれば別ですが・・・)
ただし、Linqを使用することで、以下のように簡単に記載することができます。
var ballDics = ballList.ToDictionary(val => val, val => val.Length);
上記では、文字列をValueとして入れていますが、構造体配列の一部をキーとしてDictionary化するのに役立つと思います。
public struct Data
{
public String Name;
public UInt32 Age;
public UInt32 Weight;
public UInt32 Height;
};
private void Convert()
{
var dataList = new List<Data>()
{
new Data(){Name="Suzuki", Age=20,Weight=50,Height=160 },
new Data(){Name="Tanaka", Age=30,Weight=60,Height=170 },
new Data(){Name="ito", Age=40,Weight=70,Height=180 },
new Data(){Name="sato", Age=40,Weight=70,Height=180 },
};
var dics = dataList.ToDictionary(data => data.Name);
}
0 件のコメント:
コメントを投稿