PDA

View Full Version : سوال: حذف سطرهای تکراری از DataGridView



hadimtn
پنج شنبه 24 دی 1394, 18:28 عصر
سلام...
در سوال قبلی (http://barnamenevis.org/showthread.php?516462-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%DA%AF%D8%B1%D9%88%D9%87%DB%8C-%D8%A7%D8%B2-%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87-%D8%AF%D8%A7%D8%AF%D9%87-LINQ)پرسیدم که چه جوری می‌تونم سطرهای تکراری رو از نتیجه‌ی جستجو خارج کنم؟!
که جوابی داده نشد ...
.
جستجو رو انجام دادم و نتیجه رو در dataGridView نمایش دادم؛

138390

همون طور که در تصویر بالا می‌بینید دو سطر انتخاب شده تکراری هستند؛
می‌خوام [یکی از] سطرهای تکراری حذف بشن و ستون Number سطر[های] حذف شده به ستون Number سطر موجود اضافه بشه! (77 + 76)

(همونطور که می‌بینید "آچار فرانسه" با Brand "نوین کاران" نیز سه بار تکرار شده که باید دو سطر آن حذف و مقدار Number هر سه جمع بشن؛ 5 + 5 + 5)

---------------------------------------

for (int i = 0; i < dataGridView1.RowCount; i++)
{
for (int j = 0; j < i; j++)
{
if (dataGridView1.Rows[i].Cells[1].Value.ToString() == dataGridView1.Rows[j].Cells[1].Value.ToString())
{
MessageBox.Show(dataGridView1.Rows[i].Cells[1].Value.ToString() + " VS " + dataGridView1.Rows[j].Cells[1].Value.ToString(), "نتیجه", MessageBoxButtons.OK);
}
}
}


خودم اینجوری نوشتم ولی خب ایراد داره، قسمت جستجوی انجمن ایراد داره، نتونستم ارسال‌های قبلی رو بررسی کنم!

juza66
یک شنبه 27 دی 1394, 19:02 عصر
سلام

خوب اینجوری که من دیدم شما بجای ثبت دوباره اون رکورد مورد نظر رو ویرایش کنید و number رو فقط آپدیت کنید همین...

reza_ali202000
یک شنبه 27 دی 1394, 20:26 عصر
سلام دوست عزیز
اگه جستجوی شما از جداول دیتابیس باشه نوع سلکتتون رو یونین بزارید و بعد گروپ بای کنید اون مقادیر رو سام کنید.

ولی اگه میخواید تکراریا رو از دیتاگرید حذف کنید و جمعشون رو توی دیتاگرید بیارید دوتا راه دارید: یکی اینکه یه جدول تمپ درست کنید همه رو داخلش اینزرت کنید و بعد همون دستور بالا برا خوندنش گروپ بای کنید.
اگه این راه حل ها رو نمیخواید انجام بدید باید یه خورده ساختمان داده بخونید و بهترین الگوریت جستجو رو روش پیاده کنید و تکراریا رو ببرید توی یه آرایه بعد مقادیرشو جمع کنید و نمایش بدین. این روش یه خورده ممکنه کند باشه . به نظرم راه حل بالایی به راحتی جواب بده. من خودم همیشه از راه اول کارامو انجام میدم. بدون هیچ مشکلی هم جواب میده.