【问题标题】:Best way to convert a huge collection of key value pairs to C# object将大量键值对转换为 C# 对象的最佳方法
【发布时间】:2014-06-27 03:36:00
【问题描述】:

我有一个 Web 服务,它返回一个包含多个子对象的对象。父对象和子对象都有一个巨大的键值对数组(keyvaluepair[])。此时我正在使用linq来识别keyvaluepair,然后获取值。

对于较小的集合,此过程似乎没问题。但是我从服务接收到的对象有 300 多个键值对,我正在寻找一种最佳方式将键值对映射到我的对象。

有什么好的方法可以做到这一点,或者有任何现有的图书馆可以帮助我做到这一点吗?

【问题讨论】:

  • 300 并不是一个庞大的集合......
  • 一次性进程 300 可能不会很大。就我而言,我有两个此类 Web 服务,我必须使用它们并从键值对映射对象。将连续多次调用这些网络服务,我正在寻找一种有效的方法来做到这一点。

标签: c# linq collections mapping


【解决方案1】:

听起来你应该只是建立一个字典:

var dictionary = pairs.ToDictionary(pair => pair.Key, pair => pair.Value);

然后您可以非常有效地通过键查找任何条目。请注意,这要求所有键都是不同的。如果一个键可以有多个值,请改用ToLookup

【讨论】:

  • 感谢您建议使用 ToLookup。就我而言,我确实有重复的键,所以我想 ToLookup 是要走的路。
【解决方案2】:

使用 jon 的初始代码并基于 This Question - 如果您已经定义了类,则可以使用序列化程序作弊

var dictionary = pairs.ToDictionary(pair => pair.Key, pair => pair.Value);
var serializer = new JavaScriptSerializer();
var yourObject= serializer.Deserialize<yourObject>(serializer.Serialize(dictionary));

【讨论】:

    猜你喜欢
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2019-03-05
    • 1970-01-01
    • 2014-04-06
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多