C# Compare Two Lists of Different Objects -


i saw quickest way compare 2 list<> i'm having trouble adapting situation. issue lists of different types.

my lists this:

list<type1> firstlist; list<type2> secondlist; 

here have now:

foreach (type1 item in firstlist) {     if (!secondlist.any(x => x.id == item.id))     {         // code executed on each item in firstlist not in secondlist     } } foreach (type2 item in secondlist) {     if (!firstlist.any(x => x.id == item.id))     {         // code executed on each item in secondlist not in firstlist     } } 

this works , all, o(n^2). there way make more efficient? solution in questions linked above says use .except doesn't take lambda.

edit: mentioned above, still being flagged duplicate. not have 2 lists of same object. have 2 lists of different objects. type1 , type2 different types. both have id need match on.

i recommend converting ids of 2 types 2 hashsets. can

hashset<int> = new hashset<int>(firstlist.select(o => o.id));  hashset<int> b = new hashset<int>(secondlist.select(o => o.id)); if (a.issubsetof(b) && b.issubsetof(a)) {     //do thing } 

Popular posts from this blog