【发布时间】:2016-05-19 10:20:43
【问题描述】:
我有类似的请求,如下链接所示
"Grouping" dictionary by value
但我想根据类的属性进行分组。
public class myClass1
{
public int id { get; set; }
public string networkId { get; set; }
}
在下面的示例中,我想要一组 networkId
var obj1 = new myClass1() { id = 11, networkId = "asdf1" };
var obj2 = new myClass1() { id = 22, networkId = "asdf2" };
var obj3 = new myClass1() { id = 33, networkId = "asdf3" };
var obj4 = new myClass1() { id = 44, networkId = "asdf1" };
var obj5 = new myClass1() { id = 55, networkId = "asdf2" };
var obj6 = new myClass1() { id = 66, networkId = "asdf1" };
var obj7 = new myClass1() { id = 77, networkId = "asdf1" };
var classDictionary = new Dictionary<int, myClass1>();
classDictionary.Add(1, obj1);
classDictionary.Add(2, obj2);
classDictionary.Add(3, obj3);
classDictionary.Add(4, obj4);
classDictionary.Add(5, obj5);
classDictionary.Add(6, obj6);
classDictionary.Add(7, obj7);
Dictionary<myClass1, List<int>> test2 =
classDictionary.GroupBy(r => r.Value.networkId)
//.ToDictionary(t => t.Key, t => t.Select(r => r.Value).ToList());
所以结果就像一个字典,键值如下
"asdf1" -> List of obj1, obj4, obj6, obj7
"asdf2" -> List of obj2, obj5
"asdf3" -> List of obj3
有什么帮助吗?
【问题讨论】:
-
这不行吗?
.ToDictionary(t => t.Key, t => t.Select(r => r.Value).ToList()); -
不,有些编译错误
-
哦,应该是
var test2 =(或Dictionary<string, List<myClass1>> test2 =),因为您需要myClass1的列表,而不是int。此外,在未来,请包含错误消息,而不仅仅是编译错误 - 这没有多大帮助:) -
是的,我应该从一开始就包含它。看看下面的答案,如果我像你提到的那样把它变成 var test2,这个问题就不会弹出。谢谢您的帮助!我应该从一开始就这样做......