عملگر مقایسه ای SequenceEqual – آموزش LINQ

تصویر linq-equality-operator-sequenceequal_11102 عملگر مقایسه ای SequenceEqual - آموزش LINQ

عملگر مقایسه ای SequenceEqual

در زبان کوئری نویسی LINQ فقط یک عملگر مقایسه ای وجود دارد که عملگر SequenceEqual نام دارد. این عملگر بررسی می کند که آیا عناصر موجود در دو مجموعه با هم برابر اند یا خیر. اگر مجموعه ها شامل مقادیری از نوع داده های Primitive (برای نمونه int, string, double, bool) باشند مقادیر عناصر با هم مقایسه می شود و اگر نوع داده پیچیده تری داشته باشند، reference عناصر بررسی می شود. در مثال زیر با استفاده از متد SequenceEqual دو مجموعه که از نوع داده آن ها string است با هم مقایسه می شوند:

توجه داشته باشید که برای متد SequenceEqual ترتیب عناصر مهم است و اگر ترتیب دو مجموعه یکی نباشید نتیجه false خواهد بود. مثال:

در هنگام مقایسه دو مجموعه که نوع داده پیچیده تری دارند، متد افزودنی SequenceEqual برای مقایسه عناصر از reference آن ها استفاده می کند. این موضوع ممکن است نتیجه اشتباه تولید کند. برای مثال:

در مثال فوق studentList1 و studentList2 هر دو یک عنصر دارند که همان شیء std است یعنی reference آن ها برابر است. در نتیجه این دو مجموعه برابر اند. اما stdList1 و stdList2 از دو شیء متفاوت تشکیل شده اند و این موضوع باعث می شود تا نتیجه false شود با این که مقادیر هر دو شیء یکسان است.

برای رفع این مشکل می توانیم از اینترفیس IEqualityComperar<T> استفاده کنیم. برای مثال:

با استفاده از اینترفیس می توانیم یک مقایسه کننده سفارشی ایجاد کرده و از آن برای مقایسه دو مجموعه استفاده کنیم. برای درک بهتر به مثال زیر توجه کنید:

ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است