gpt4 book ai didi

c# - Skip and Take 后对象字典的转换结果

转载 作者:太空狗 更新时间:2023-10-29 18:07:23 25 4
gpt4 key购买 nike

我有一个这样定义的对象字典 -

Dictionary<string, MyObject> myObjectDictionary 

我想根据索引和项目数获取字典中的项目。我正在尝试使用 SkipTake .但这需要将其重铸回 Dictionary<string, MyObject> .如何才能做到这一点?我应该采用其他方式吗?

这是我的代码和重铸失败的尝试-

Dictionary<string, MyObject> myObjectDictionary = FillMyObjectDictionary();

var mySmallerObjectDictionary = myObjectDictionary.Skip(startNumber).Take(count);

//THE FOLLOWING DOES NOT WORK
Dictionary<string, MyObject> myNewObjectDictionary = (Dictionary<string, MyObject>)mySmallerObjectDictionary

最佳答案

好吧,你可以创建一个新字典:

Dictionary<string, MyObject> myNewObjectDictionary =
myObjectDictionary.Skip(startNumber)
.Take(count)
.ToDictionary(pair => pair.Key, pair => pair.Value);

但是:

  • 您不应该依赖字典的排序。不清楚您希望跳过哪些项目。考虑在 Skip 之前使用 OrderBy。例如:

    Dictionary<string, MyObject> myNewObjectDictionary =
    myObjectDictionary.OrderBy(pair => pair.Key)
    .Skip(startNumber)
    .Take(count)
    .ToDictionary(pair => pair.Key, pair => pair.Value);
  • 不会保留原始字典中的任何自定义相等比较器。不幸的是,它没有在任何地方公开,所以您只需要知道 FillMyObjectDictionary 是否使用自定义比较器。

关于c# - Skip and Take 后对象字典的转换结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20981784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com