gpt4 book ai didi

C# 根据模型中的枚举属性将列表<模型> 转换为字典<枚举,列表<模型>>?

转载 作者:行者123 更新时间:2023-11-30 14:38:26 26 4
gpt4 key购买 nike

不要混淆:How can I convert List to Hashtable in 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<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 的衬垫!

最佳答案

在我看来你可以使用 Lookup :

var lookup = models.ToLookup(o => o.Task);

或者如果你真的想要 Dictionary<MyEnum, List<TaskModel>> :

var dictionary = models.GroupBy(o => o.Task)
.ToDictionary(g => g.Key, g => g.ToList());

关于C# 根据模型中的枚举属性将列表<模型> 转换为字典<枚举,列表<模型>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7921629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com