gpt4 book ai didi

C# 在运行时将两个对象合并在一起

转载 作者:IT王子 更新时间:2023-10-29 04:33:32 25 4
gpt4 key购买 nike

我有一种情况,我正在从 Excel 加载一个非常不规范的记录集。我拉入每一行并一次创建一个对象。每行可以包含一个公司和/或一个客户。

我的问题是多行可能有相同的对象,所以我可能已经创建了它。我做了一个比较,看它是否已经在列表中。如果是这样,我需要合并这两个对象以确保我没有从第二行获得任何新信息。

所以:

company   - client   - address   - phone
----------------------------------------
mycompany - - myaddress -
mycompnay - myclient - - myphone

因此第一行将创建一个地址为“myaddress”的公司对象。第二行将创建另一个公司对象(根据我的规则,它是同一家公司,因为名称相同),这也有一个客户引用和一个电话号码。

所以我知道它们是相同的,但需要确保所有数据都合并到一个对象中。

目前我正在创建一个实用程序类,它接受两个对象(一个是主要的,另一个是要合并的,所以如果有冲突,一个有优先权),它遍历每个变量并分配值,如果有任何。这有点重,我希望可能有一些实用程序可以用来为我完成手动工作。

示例已被简化,因为有相当少的其他变量、一些基本类型和其他更复杂的项目。

最佳答案

反射会起作用。像这样的东西:

public static void MergeWith<T>(this T primary, T secondary) {
foreach (var pi in typeof(T).GetProperties()) {
var priValue = pi.GetGetMethod().Invoke(primary, null);
var secValue = pi.GetGetMethod().Invoke(secondary, null);
if (priValue == null || (pi.PropertyType.IsValueType && priValue.Equals(Activator.CreateInstance(pi.PropertyType)))) {
pi.GetSetMethod().Invoke(primary, new object[]{secValue});
}
}
}

关于C# 在运行时将两个对象合并在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396422/

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