有人可以帮助我,或者可以给我任何解决这个问题的指针。通过比较2个对象列表来合并列表对象。
它可以通过简单的for循环和linq来管理,因为数据非常庞大,我正在寻找最佳方式,或者为此目的的任何算法都会有很大的帮助。
class user
{
string userID;
string userName;
//...
List<role> objRoles;
}
class role
{
List<pemission> objPermisison;
}
class pemission
{
bool newlyAdded;
//...
}
List<User> List1 :
User1
- Role_1
- Permission_1
- Permission_2
- Role_2
- Permission_3
- Permission_4
List<User> List2 :
User1
- Role_1
- Permission_3
- Permission_4
- Role_2
- Permission_5
- Permission_4
Required Result :
List<User> Resultant_List :
User1
- Role_1
- Permission_1
- Permission_2
- Permission_3 - Flag (Newly Added)
- Permission_4 - Flag (Newly Added)
- Role_2
- Permission_3
- Permission_4
- Permission_5 - Flag (Newly Added)
答案 0 :(得分:1)
根据here合并两个没有重复的列表,字典合并是最快的方法......
&#34;此解决方案将list2转换为字典,然后在list1上循环一次。它要么添加到字典中,要么替换list2的值(如果它是重复的)。这似乎是一种更有效的算法。&#34;
var dict = list2.ToDictionary(p => p.userID);
foreach (var person in list1)
{
dict[person.userID] = person;
}
var merged = dict.Values.ToList();