2
不要與混淆:How can I convert List to Hashtable in C#?C#根據模型中的枚舉屬性將列表<model>轉換爲字典<枚舉,列表<model>>?
我有,我想組織與枚舉作爲密鑰的哈希表模型的列表,以及模型(即有枚舉的值)值的列表。
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<MyModel> models = new List<MyModel>();
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));
什麼是列表轉換成一個哈希表是這樣的最簡單的方法(原諒JSON):
{
Blue:
[
{ Blue, "How", 1 },
{ Blue, "Brown", 3 }
],
Green:
[
{ Green, "Now", 2 },
{ Green, "Cow", 4 }
]
}
當我做這樣的事情:
var taskTable = tasks.Cast<TaskModel>().ToDictionary(o => o.Task); (Where Task is the Enum)
我得到這個例外:「一個項目有相同的密鑰已被添加。」
與Lambda或Linq的一個內襯讚賞!
完美!我喜歡1線優雅的解決方案! – Levitikon
@Levitikon:LINQ提供了很多這樣的功能......如果我可以對某種技術有一個迷戀,那麼LINQ就是...... LINQ to XML。 –
@JonSkeet:你太對了! Linq是MS有史以來最好的發明之一。它使得編碼(在很多情況下)更具可讀性。但是就像生活中總是那樣:沒有更糟的情況下你不能得到好處 - 有時你可以發表聲明讓他們閱讀! ;-) – Fischermaen