【发布时间】:2018-11-20 12:34:22
【问题描述】:
拥有一个具有这种结构的对象:
public class GroupedObject
{
public int id { get; set; }
public string name { get; set; }
public int value { get; set; }
public string color { get; set; }
}
在这里,它按其属性之一进行分组,id。
var myObj = someResponse
.Select(d => new GroupedObject
{
id = d.id,
name = d.name,
value = d.value,
color = d.color
})
.GroupBy(o => o.id)
.ToDictionary(a => a.Key, a => a.Select(o => o).ToList());
结构是:
id - id, name, value, color
id - id, name, value, color
id - id, name, value, color
我想要做的是将它再次按name 分组,得到一个像这样的嵌套结构:
id - name - id, name, value, color
- name - id, name, value, color
id - name - id, name, value, color
- name - id, name, value, color
- name - id, name, value, color
- name - id, name, value, color
id - name - id, name, value, color
- name - id, name, value, color
- name - id, name, value, color
尝试使用GroupBy 两次没有成功。也不是通过使用ToList 对其进行转换并在此之后进行分组。
var myObj = someResponse
.Select(d => new GroupedObject
{
id = d.id,
name = d.name,
value = d.value,
color = d.color
})
.GroupBy(o => o.id).GroupBy(o => o.name)
.ToDictionary(a => a.Key, a => a.Select(o => o).ToList());
【问题讨论】:
-
当然,您必须将 ToDictionary 放在第一个 GroupBy 中,然后不要在 ToDictionary 中执行 a.Select...,而是使用 a.GroupBy 并将整个 ToDictionary 与另一个 .Select 链接。
-
您想要的最终结果应该是这样的?
Dictionary<int, Dictionay<string, List<GroupedObject>>- 外部Dictionary的int键是id,内部Dictionary的string键是name? -
@RandRandom 是
标签: c# dictionary group-by