سلام
با اجازه دوستم عزیزم جناب hamidreza_buddy
اگر آرایه های مرتب شده باشند یا مرتب بشوند کار خیلی ساده تر است وگرنه باید به ازای هر آیتم اعضای تا آن نقطهرا اسکن کنید.
ولی در اصل چیز دیگری را میخواستم بگویم این نبود!...
اگر هدفتان الگوریتم نویسی و آزمایشی و... نیست با امکانات فوق العاده قدرتمند LINQ شما قاد خواهید این اعمال به سادگی و بدون نگرانی از الگوریتم و... بنویسید و قوای فکری خود را روی مسائل مهم تر متمرکز کنید.
مثلاً ارایه زیر را داریم...
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(جالب این است که میتواند اصلاً آرایه نباشد، و هر لیست قابل شمارشی مجاز است و حتی این لیست شمارشی میتواند یک ساختار structure یا class باشد)
دستورات LINQ رای دیتای فوق:
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این دستورات فوق العاده ساده و بچه گانه linq هستند و group و join و Where و... میتوان روی ساختارهای تو در توی شمارشی اعمال کرد و خروجی شمارشی یک بلوک linq را خوراک ورودی یک دستور دیگرش کرد....
همانطور که مشاهده کردید حذف آیتم های تکراری فقط یک خط کد میشود!
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
=====
این روش صنعتی است که مایکروسافت در دات پیشنهاد داده و تا حالا در هیچ زبان برنامه نویسی واقعی سابقه نداشته و در انحصار زبان دیتابیسی sql بوده.
همانطور که دیگر برنامه نویسان به نوشتن رکوردی فایل ها و ذخیره و بازیابی اطلاعات در فایل توجه زیادی نمیکنند و آن را به موتورهای بانک های رابطه ای میسپارند، همین وضع در بخش های دیگر هم وجود دارد تا فکر برنامه نویس را از جزئیات و +1 و -1 آزاد کند.
=====
البته حالا که تایپ مطالب تمام کردم، دلم نیامد یاد ایام جوانی و ++C را نکنم!
در نتیجه بدون LINQ (و بیشتر برای علاقه خودم) کد زیر را برای حذف عناصر تکراری نوشتم.
(
طبیعتاً اگر سعی کنید خودتان کدنویسی کنید و متوجه هم شوید خیلی بهتر و بنیادین تر است، میتوانید روی پیاده سازی الگوریتم جناب hamidreza_buddy فکر کنید، چیزی که خودتان با صرف روزها کار به آن برسد به نظر من بسیار ارزشمند تر از کپی برداری است.
)
نتیجه آرایه ای جدید است که تعداد اعضای اصلی آن iCount خواهد بود.
کد:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(کد اول VB.Net بود و دومی C#.Net ، به این میگن انصاف در کدنویسی!!!!
)