پیدا کردن بیشترین آیتم تکرار شده در یک لیست

#C

توسط exe در 6 سال پیش
0 42.1k 2 6 سال پیش
exe scarface
0

سلام دوستان کد زیر بیشترین آیتم تکرار شده تو یه لیست باکس با مقدارش رو میگه.حالا اگه ما بخوایم به ترتیب 3 تا آیتمی که بیشترین تکرار رو دارن بدست بیاریم باید چیکار کنیم
[CSHARP]
private void button2_Click(object sender, EventArgs e)
{
int count =0;
int maxcount =0;
string result = "";
for(int i = 0;i<listBox1.Items.Count;i++)
for (int j = 0; j < listBox1.Items.Count; j++)
{
if (listBox1.Items[i] == listBox1.Items[j])
count++;
if (j == listBox1.Items.Count - 1)
{
if (count > maxcount)
{
maxcount = count;
result = listBox1.Items[i].ToString();

                    }
                    else if (count == maxcount)
                    {
                        if(!result.Contains(listBox1.Items[i].ToString()))
                        result += "," + listBox1.Items[i].ToString();
                    }
                    count = 0;
                }
            }
        MessageBox.Show("Bishtarin : " + result + "\nTedad : " + maxcount.ToString() + "");
    }

[/CSHARP]

0

LINQ:
[CSHARP]
var list = listBox1.Items.OfType<string>();
var result = list.GroupBy(i => i)
.OrderByDescending(g => g.Count())
.Select(g => g.Key)
.Take(3);

        foreach (var item in result)
        {
            Console.WriteLine(item);
        }

[/CSHARP]

آموزش LINQ

0

ميشه يكم توضيح بدين كه اين كد رو چجوري بايد استفاده كرد.متوجه نشدم

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.