PDA

View Full Version : پیدا کردن عنصر تکراری



behzadk
دوشنبه 16 فروردین 1389, 13:58 عصر
با سلام
ما در یک لیست چگونه می توانیم عنصر تکراری را تشخیص دهیم ؟
البته اگر در لیست 10 تا عنصر باشد راحت است اما اگر 10000 باشد بهینه نیست
با تشکر فراوان

Vahid_moghaddam
دوشنبه 16 فروردین 1389, 14:08 عصر
یه روش: استفاده از LINQ



List<int> lst = new List<int>() { 1, 1, 2, 3, 4, 4, 5, 5, 5, 6, 7, 8, 9, 9, 10, 11, 11 };
var v = from i in lst
group i by i into g
where g.Count() > 1
select g.Key;

foreach (int j in v)
listBox1.Items.Add(j);


یا



var v2 = from i in lst
group i by i;
foreach (var x in v2)
if (x.Count() > 1)
listBox1.Items.Add(x.Key);

mehdi.mousavi
دوشنبه 16 فروردین 1389, 14:45 عصر
با سلام ما در یک لیست چگونه می توانیم عنصر تکراری را تشخیص دهیم ؟ البته اگر در لیست 10 تا عنصر باشد راحت است اما اگر 10000 باشد بهینه نیست با تشکر فراوان

سلام.
اگر هدف از این تشخیص اینه که جلوی تکراری بودن عناصر رو بگیرید، بهتره از Hashtable یا مابقی کلاسهایی که به این منظور طراحی شده اند استفاده کنید. اما در واقع سوال اصلی این هستش که این 10000 رکورد از کجا میان؟ اگر اونها رو از بانک در میارید، توی همون دستور Select می تونید از تکراری بودن عناصر هم مطلع بشید.

لطفا سوال رو دقیقتر مطرح کنید تا بشه بهش دقیقتر هم پاسخ داد.

موفق باشید.

saied_genius
دوشنبه 16 فروردین 1389, 15:34 عصر
سلام

از arraylist هم مي توان استفاده نمود.

مثال:


System.Collections.ArrayList arr = new System.Collections.ArrayList();
if (!arr.Contains("search string"))
{
arr.Add("search string");
}


موفق باشيد.

mehdi.mousavi
دوشنبه 16 فروردین 1389, 18:58 عصر
سلام از arraylist هم مي توان استفاده نمود. موفق باشيد.


سلام.
بخاطر انجام عمل Boxing/Unboxing (که احتمالا در تاپیکی جداگانه اونو بطور مفصل توضیح بدم)، لطفا نه خودتون از ArrayList استفاده کنید و نه دیگه اونو هرگز به دیگران توصیه کنید. به جای اون از Generic ها استفاده کنید.

موفق باشید.