C#モデルの列挙型プロパティに基づいてリスト<model>を辞書<enum、List <model >>に変換しますか?

混乱しないでください:リストをHashtableに変換するにはどうすればいいですか? C#?

私はモデルとして、列挙型をキーとしたハッシュテーブルと、値として列挙型の値を持つモデルのリストに整理したいモデルのリストを持っています。

public enum MyEnum
{
    Blue,
    Green
}

public class MyModel
{
    public MyModel(MyEnum myEnum, string foo, int bar)
    {
        this.MyEnum = myEnum;
        this.Foo = foo;
        this.Bar = bar;
    }

    public MyEnum MyEnum { get; set; }
    public string Foo { get; set; }
    public int Bar { get; set; }
}

List models = new List();

models.Add(new MyModel(MyEnum.Blue, "How", 1));
models.Add(new MyModel(MyEnum.Green, "Now", 2));
models.Add(new MyModel(MyEnum.Blue, "Brown", 3));
models.Add(new MyModel(MyEnum.Green, "Cow", 4));

リストを以下のようなハッシュテーブルに変換する最も簡単な方法は何ですか(許してください)

{ 
   Blue:
   [
      { Blue, "How", 1 },
      { Blue, "Brown", 3 }
   ],
   Green:
   [
      { Green, "Now", 2 },
      { Green, "Cow", 4 }
   ]
}

私がこのようなことをしたとき、

var taskTable = tasks.Cast().ToDictionary(o => o.Task); (Where Task is the Enum)

私はこの例外を受け取ります: "同じキーを持つアイテムは既に追加されています。"

LambdaまたはLinqのライナーが1つ評価されます!

2

1 答え

6
追加された
@ JonSkeet:あなたはそうだよ! Linqは、これまでに作った最高の発明の1つでした。多くの場合、コーディングがより読みやすくなります。しかし、いつものように、あなたは良いことを悪くすることはできません。時には、声明を読むことができます。 ;-)
追加された 著者 Fischermaen,
ルックアップはインテントも示しており、この機能に最適化されているため優れています。
追加された 著者 Scott Rippey,
@ Levitikon:そしてLINQは非常に多くを提供しています...もし私が技術に人を圧倒することができたら、LINQはそれに続くでしょう... LINQ to XML。
追加された 著者 Jon Skeet,
完璧!私は1行のエレガントなソリューションが大好きです!
追加された 著者 Levitikon,