我有一种情况,我从Excel加载一个非常不规范的记录集.我拉入每一行并一次创建一个对象.每行可以包含公司和/或客户.
我的问题是多行可能有相同的对象,所以我可能已经创建了它.我做了一个比较,看看它是否已经在列表中.如果是这样,我需要合并这两个对象,以确保我没有从第二行获得任何新信息.
所以:
company - client - address - phone
----------------------------------------
mycompany - - myaddress -
mycompnay - myclient - - myphone
Run Code Online (Sandbox Code Playgroud)
所以第一行会创建一个地址为"myaddress"的公司对象.第二行将创建另一个公司对象(根据我的规则是与公司名称相同的公司),这也有客户参考和电话号码.
所以我知道它们是相同的,但需要确保所有数据合并到一个对象中.
目前我正在创建一个实用程序类,它接受两个对象(一个是主要的,另一个是合并的,所以如果存在冲突,则一个具有优先级),它会遍历每个变量并分配值(如果有的话) .这是一个沉重的锅炉板,我希望可能有一些实用工具,我可以用来为我做手工工作.
这个例子已经简化,因为有一些其他变量,一些基本类型和其他更复杂的项目.
Mar*_*ett 37
反思会起作用.就像是:
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});
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16906 次 |
| 最近记录: |