[c#]子把一本字典分成较小的部分

标签: Linq C#
发布时间: 2017/2/28 21:42:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我试图分一本字典分成较小的部分。我的方法工作,我只想知道是否有更有效的方式做这件事。例如,词典有 10 个元素,但我的代码可以有高达 1000年,会中,我通过对 api 的 50 批次。

我的 Questain 有更有效的方式做这件事......?

int divideamount = 2;

Dictionary<string, string> dictionary = new Dictionary<string, string>();
dictionary.Add("cat1", "cat");
dictionary.Add("dog2", "cat");
dictionary.Add("cat3", "cat");
dictionary.Add("dog4", "cat");
dictionary.Add("cat5", "cat");
dictionary.Add("dog6", "cat");
dictionary.Add("cat7", "cat");
dictionary.Add("dog8", "cat");
dictionary.Add("cat9", "cat");
dictionary.Add("dog10", "cat");


var divided_dictionary
    = dictionary.Select((value, index) => new { Index = index, Value = value })
                .GroupBy(x => x.Index / divideamount)
                .Select(g => g.Select(x => x.Value).ToDictionary(x => x.Key, x => x.Value))
                .ToList();


foreach (Dictionary<string, string> division in divided_dictionary)
{ 
    // do some work
}

提前感谢任何帮助或评论。

解决方法 1:

您可以使用 Partition moreLINQ 库的方法

var divided_dictionary
    = dictionary.Partition(divideamount)
                .Select(x => x.ToDictionary(i => i.Key, i => i.Value));

我写一篇博文关于分区前一阵子使用 LINQ 的集合。您可能会发现很有用︰分区使用 LINQ 的集合︰ 不同的方法,不同的性能,相同的结果

官方微信
官方QQ群
31647020