我有 2 个用户对象(都来自不同的数据源)
public class UserA
{
String Firstname;
String Lastname;
String Upn;
String Id;
}
public class UserB
{
String Firstname;
String Lastname;
String Upn;
String MemberOf;
String SamAccountName
}
现在用户 X 可能存在于两个数据源中(或者可能只存在于其中一个数据源中)。在那种情况下,字段 upn
将是相同的。理论上 firstname
和 lastname
也应该相同。因此,如果只使用第一个就可以了(以防出现差异)。
现在我想将这些对象合并在一起,以便获得唯一用户列表。但是两个对象的所有字段(所以我可以将其作为 JSON 返回)
所以最终的对象(如果用户存在于两个来源中看起来像)
public class UserC
{
String Firstname;
String Lastname;
String Upn;
String Id;
String MemberOf;
String SamAccountName
}
最佳答案
这是一种方法。您可以选择如何处理一个列表中不在另一个列表中的项目。
字典用于提高性能。
List<UserA> listA;
List<UserB> listB;
var dictA = listA.ToDictionary(x => x.Upn, x => x);
var dictB = listB.ToDictionary(x => x.Upn, x => x);
foreach(var upn in dictA.Keys.Union(dictB.Keys))
{
UserC user = new UserC();
if(dictA.ContainsKey(upn)) //Fill in fields
if(dictB.ContainsKey(upn)) //Fill in fields
}
关于c# - 合并来自多个来源的不同类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51042510/