我有一个简单的对象格式
class MyObject {
public string foo;
public string bar;
}
Run Code Online (Sandbox Code Playgroud)
我有一个这些对象的列表,其中'foo'的值是唯一的,而'bar'的值不是.例如 - 想象一下值如下
我正在寻找将这些项目组合起来,如下所示:a Dictionary<string,List<string>具有独特的"bar"键,以及List<string>它们相关的"foo"值.
我可以用一个相当简单的循环来做到这一点 -
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});
}
}
Run Code Online (Sandbox Code Playgroud)
但我正在努力学习如何正确使用LINQ,似乎有一个优雅的解决方案使用它.使用LINQ的正确方法是什么?
听起来你真的只想要一个Lookup通过这个ToLookup方法:
var lookup = myObjectList.ToLookup(x => x.bar, x => x.foo);
Run Code Online (Sandbox Code Playgroud)
如果你真的需要一个,Dictionary你可以使用类似的东西:
var dictionary = myObjectList.GroupBy(x => x.bar, x => x.foo)
.ToDictionary(g => g.Key, g => g.ToList());
Run Code Online (Sandbox Code Playgroud)
...但是如果可以,我会使用查找.
| 归档时间: |
|
| 查看次数: |
1137 次 |
| 最近记录: |