Except অপারেটর ডিজাইন করা হয়েছে IEnumerable<T> সাপোর্ট করা ডেটা কোয়েরি করার জন্য। যেহেতু সব LINQ কোয়েরি IEnumerable<T> রিটার্ন করে, তাই এই অপারেটর LINQ কোয়েরি রেজাল্টের ওপর সেট অপারেশন করতে দেয়।
Except অপারেটর একটি লিস্টের সব আইটেম দেখায় دوسرے লিস্টের আইটেম বাদ দিয়ে।
উদাহরণ ১: Except মেথড সিনট্যাক্স
class Program
{
static void Main(string[] args)
{
var listA = Enumerable.Range(1, 6); // 1,2,3,4,5,6
var listB = new List<int> { 3, 4 };
var listC = listA.Except(listB);
foreach (var item in listC) Console.WriteLine(item);
Console.ReadLine();
}
}
ব্যাখ্যা: লিস্ট A (1-6) থেকে লিস্ট B (3,4) বাদ দিয়ে বাকিগুলো পাওয়া যাচ্ছে।
আউটপুট
1
2
5
6
উদাহরণ ২: SQL-লাইক সিনট্যাক্স (Where + Any)
static void Main(string[] args)
{
var listA = Enumerable.Range(1, 6);
var listB = new List<int> { 3, 4 };
var listC = from c in listA
where !listB.Any(o => o == c)
select c;
foreach (var item in listC) Console.WriteLine(item);
Console.ReadLine();
}
আউটপুট
1
2
5
6
নোট: Except ডিস্টিংক্ট রেজাল্ট দেয় (ডুপ্লিকেট রিমুভ করে)। যদি ডুপ্লিকেট রাখতে চান, তবে Where + !Any বা !Contains ব্যবহার করুন। কমপ্লেক্স অবজেক্টের জন্য IEqualityComparer<T> ইমপ্লিমেন্ট করতে হয়।