আমি জোর দেওয়া গুরুত্বপূর্ণ বলে মনে করি - পদ্ধতি ব্যতীত আপনি কেবল দ্বিতীয়টিতে আইটেম ছাড়াই প্রথমে থাকা আইটেমগুলি ফিরিয়ে আনবেন । এটি দ্বিতীয়টিতে সেই উপাদানগুলিকে ফেরত দেয় না যা প্রথমে প্রদর্শিত হয় না।
var list1 = new List<int> { 1, 2, 3, 4, 5};
var list2 = new List<int> { 3, 4, 5, 6, 7 };
var list3 = list1.Except(list2).ToList(); //list3 contains only 1, 2
তবে আপনি যদি দুটি তালিকার মধ্যে সত্যিকারের পার্থক্য পেতে চান:
আইটেমগুলি যারা দ্বিতীয় একের আইটেম ছাড়াই প্রথম এবং আইটেমগুলি প্রথমটিতে থাকা আইটেমগুলি ছাড়াই।
আপনার দু'বার বাদে ব্যবহার করা দরকার:
var list1 = new List<int> { 1, 2, 3, 4, 5};
var list2 = new List<int> { 3, 4, 5, 6, 7 };
var list3 = list1.Except(list2); //list3 contains only 1, 2
var list4 = list2.Except(list1); //list4 contains only 6, 7
var resultList = list3.Concat(list4).ToList(); //resultList contains 1, 2, 6, 7
অথবা আপনি ব্যবহার করতে পারেন SymmetricExceptWith HashSet পদ্ধতি। তবে এটি সেটে পরিবর্তন করে যার উপর ডাকা হয়:
var list1 = new List<int> { 1, 2, 3, 4, 5};
var list2 = new List<int> { 3, 4, 5, 6, 7 };
var list1Set = list1.ToHashSet(); //.net framework 4.7.2 and .net core 2.0 and above otherwise new HashSet(list1)
list1Set.SymmetricExceptWith(list2);
var resultList = list1Set.ToList(); //resultList contains 1, 2, 6, 7
Exceptএটি সেট অপারেশন হিসাবে যুক্ত করব, তারপরে ফলাফলের তালিকার স্বতন্ত্র মান থাকবে, যেমন,{'A','A','B','C'}.Except({'B','C'})প্রত্যাবর্তন{'A'}