【发布时间】:2012-02-23 10:39:02
【问题描述】:
我有一个格式为的简单对象
class MyObject {
public string foo;
public string bar;
}
我有一个这些对象的列表,其中 'foo' 的值是唯一的,而 'bar' 的值不是。例如 - 想象一下这些值如下
- Foo1, Bar1
- Foo2, Bar2
- Foo3, Bar1
- Foo4, Bar3
我希望将这些项目分组,如下所示,一个带有唯一“bar”键的Dictionary<string,List<string>,以及一个带有关联“foo”值的List<string>。
- Bar1, [Foo1,Foo3]
- Bar2,[Foo2]
- Bar3,[Foo4]
我可以使用一个相当简单的循环来做到这一点 -
Dictionary<string,List<string>> result = new Dictionary<string,List<string>>();
myObjectList = new List<MyObject>();
foreach (MyObject obj in myObjectList)
{
if (result.ContainsKey(obj.bar))
{
result[obj.bar].Add(obj.foo);
}
else
{
result.Add(obj.bar,new List<string> {obj.foo});
}
}
但我正在尝试学习如何正确使用 LINQ,而且使用它似乎会有一个优雅的解决方案。使用 LINQ 的正确方法是什么?
【问题讨论】: