PDA

View Full Version : حذف آیتمهای تکراری listbox



kh1387
چهارشنبه 19 خرداد 1389, 23:32 عصر
سلام
من یه لیست باکس دارم. میخوام آیتمهای تکراریشو حذف کنم.
چطوری می تونم این کار رو انجام بدم؟
دستوری مث Distinct برنامه SQL نداره؟
متشکرم

Parham.D
پنج شنبه 20 خرداد 1389, 07:24 صبح
سلام

فکر کنم مثلا باید از آیتمی که اندیسش صفر است شروع کنی و آن را با تمام اعضاء مقایسه کنی، با هر کدام که برابر بود، آن را پاک کنی، تا برسد به آخرین آیتم و بعد از آیتمی که اندیسش یک است، شروع کنی، و آن را از اندیس صفر مورد مقایسه قرار دهی (البته به جز خودش، از خودش باید رد شوی). و این داستان ادامه دارد تا اینکه آخرین آیتم با همه موارد مقایسه شود.

موفق باشی . . .

cardano7
پنج شنبه 20 خرداد 1389, 08:21 صبح
توجه به یک نکته هم ضروری هست که شما در foreach نمی تونی آیتمی از listbox رو حذف کنی.

Parham.D
پنج شنبه 20 خرداد 1389, 08:50 صبح
توجه به یک نکته هم ضروری هست که شما در foreach نمی تونی آیتمی از listbox رو حذف کنی.


فکر کنم به این دلیل که Collection استفاده شده در ForEach همان ListBox است، و در حالی که دارد از آن میخواند نمیتواند پاک کند. درسته؟

با این حساب اول باید آیتمها را در یک Collection جداگانه (از نوع Generic) ریخته و بعد در ForEach استفاده شود( در خود بدنه؛ نه در شرط آن و یا برعکس؟؟!!!). و دوباره به ListBox انتقال داده شود، جای آیتمهای قبلی. اینطور درسته؟

cardano7
پنج شنبه 20 خرداد 1389, 12:11 عصر
و بعد در ForEach استفاده شود
و اگر ایراد گرفت باید از for استفاده کرد.

sds1920
پنج شنبه 20 خرداد 1389, 16:25 عصر
شما اگه ليستت رو مرتب كني فكر كنم بهتر باشه.چون در اينصورت فقط يكبار ليست رو پيمايش مي كني.به اينصورت كه
اولين عنصر رو در نظر مي گيري
اگه با عنصر دوم برابر بود عنصر دوم حذف مي شه و اونقدر ادامه مي دي تا به عنصري برسي كه با عنصر اول برابر نيست
اگه با عنصر دوم برابر نبود عنصر بعدي رو به عنوان مبدا در نظر مي گيري و همين كار رو تكرار مي كني تا رسيدن به عنصر يكي به آخر مونده.