NOW ON AIREP.0102025 年秋番

csharp实现两个对象的合并

在一些情况下,我们并不清楚匿名对象具备哪些属性,当需要合并两个匿名对象时,手动实现比较复杂,可以直接使用TypeMerger来实现merge

TypeMerger简单使用

TypeMerger是 .NET Core中的对象合并方法,支持多种合并处理方式,这里只简单的使用一下。

使用包管理进行安装:

TypeMerger

示例代码:

csharp
var config1 = new {
    name = "Tom",
    age = 18
};

var config2 = new {
    age = 20,
    desc = "A student in high school",
    experience = new
    {
       first = "Grade 6 of primary school won the third prize in football",
       second = "I was the first in my class in the final exam of the third year of junior high school"
    }
}
var mergeConfig = TypeMerger.TypeMerger.Merge(config1, config2);
var configString = JsonConvert.SerializeObject(mergeConfig);
Console.WriteLine(configString);

返回结果:

json
{
  "name": "Tom",
  "age": 18,
  "desc": "A student in high school",
  "experience": {
    "first": "Grade 6 of primary school won the third prize in football",
    "second": "I was the first in my class in the final exam of the third year of junior high school"
  }
}

直接merge两个对象(JObject或者匿名对象),如果两个对象有相同属性,默认情况下,第二个对象的属性值会被忽略。

如果想要第二个对象的age,代码微调:

csharp
var mergeConfig = TypeMerger.TypeMerger.Ignore(() => config1.age).Merge(config1, config2);
var configString = JsonConvert.SerializeObject(mergeConfig);
Console.WriteLine(configString);

或者调整object的顺序即可。

本文为原创文章,采用 CC BY-NC 4.0 许可协议,转载请注明出处。

次回予告 · NEXT EPISODE

csharp通过对象和模板字符串解析模板

下一话已经排上日程,点进去接着看。

立即观看 →

订阅更新

新文章发布时邮件通知,随时可退订

ON AIR · 放送中

79话已放送94.7k字146条留言