pow*_*tte 3 c# linq collections partitioning
我有一个很大的对象列表,我有时需要迭代整个列表,有时我只想查看.Property ="somevalue"的对象.
目前我查看我的集合.Where(_ => _.Property="value_i_need"),如果我加载了100k对象并且只有少数人在我的目标组中,那么这个集合很昂贵.
所以我想要做的是将列表分段保存为Dictionary<string, List<T>>可以快速引用我想要的对象集,但是如果我这样做,如何使用Linq枚举所有字典中的所有对象使用更多内存来维护常规列表?
那听起来你想要一个Lookup:
var lookup = list.ToLookup(x => x.Property);
Run Code Online (Sandbox Code Playgroud)
您可以通过展平来轻松迭代整个集合:
foreach (var entry in lookup.SelectMany(x => x))
{
}
Run Code Online (Sandbox Code Playgroud)
...但这不会在初始列表顺序中(除非你很幸运:)如果你需要保持原始列表顺序,你需要做更多的工作......
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |