【问题标题】:How to split a dictionary into "n" parts [duplicate]如何将字典分成“n”部分[重复]
【发布时间】:2015-02-22 05:34:38
【问题描述】:

我需要使用 LINQ 表达式拆分我的字典。我需要分成两部分。有人可以帮我吗?

var myDictionary = new Dictionary<int, int>();
var halfOfDictionary = myDictionary.ToDictionary(...)

【问题讨论】:

  • 怎么拆分?您想获取一个集合中的键和另一个集合中的值(您不需要 Linq)?或者您想根据某些条件构建 2 个包含原始对的某些部分的新词典?请更具体。
  • 您这样做的目的是什么?可能有更好的方法来实现您的目标。

标签: c# linq


【解决方案1】:
// remove OrderBy if ordering is not important
var ordered = dictionary.OrderBy(kv => kv.Key);
var half = dictionary.Count/2;
var firstHalf = ordered.Take(half).ToDictionary(kv => kv.Key, kv => kv.Value);
var secondHalf = ordered.Skip(half).ToDictionary(kv => kv.Key, kv => kv.Value);

【讨论】:

  • 效果很好!谢谢!
  • 这假设 (dictionary.Count % 2 == 0)。除非 C# 与整数除法不同
  • @BradenBrown 我认为除法没有问题。 div 结果是一个 int。采用和跳过相同的数字(没有一个错误)。
猜你喜欢
  • 2016-09-27
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
  • 2017-06-03
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多