PDA

View Full Version : سوال: جستجو محتویات سه لیست رشته ای در یک لیست رشته ای.



دلتنگ اسمان
شنبه 16 آذر 1392, 14:51 عصر
سلام.
چهار تا لیست رشته ای دارم.لیست اولی نام تمام پرسنل می باشد. در سه لیست دیگر از همین افراد وجود دارد. میخوام افرادی رو که در سه لیست دیگه قرار دارن از لیست اصلی کم کنم.به عبارتی دیگه افرادی رو که فقط در لیست اول هستن و در لیستهای دیگه نیستن رو جداگانه بنویسم. ممنون

nunegandom
شنبه 16 آذر 1392, 16:11 عصر
سلام
ی foreach واسه پیمایش لیست اول میذاری و داخل اون ۳ تا foreach واسه پیمایش۳ تا لیست دیگه میذاری! داخل این ۳ تا foreach با استفاده از یه if چک کن اگه برابری میکرد با آیتم foreach پدر، اون رو حذف کن

alexmcse
شنبه 16 آذر 1392, 16:34 عصر
List< string > s1 = new List<string>( ) {"a", "b", "c"};
List< string > s2 = new List<string>( ) {"p","wq", "a", "b", "c", "f", "g"};
List< string > s3 = new List<string>( ) {"q", "yt", "a", "b", "c", "pp"};

List<string> s4 = new List<string>() {"ewq", "q", "yt", "a", "b", "c", "pp" ,"oi"};
;
List<string> s5 = new List<string>();//آیتم های که وجود دارند
List<string> s6 = new List<string>();//ایتم های که وجود ندارند
foreach (string item2 in s2)
{
if (s1.Contains(item2))
{
s5.Add(item2 );
}
else if (!s1.Contains(item2))
{
s6.Add(item2);

}
}

foreach (string item3 in s3)
{
if (s1.Contains(item3))
{
s5.Add(item3);
}
else if (!s1.Contains(item3))
{
s6.Add(item3);

}
}
foreach (string item4 in s4)
{
if (s1.Contains(item4))
{
s5.Add(item4);
}
else if (!s1.Contains(item4))
{
s6.Add(item4);

}
}
//نمایش آیتم های که وجود دارند در لیست باکس
foreach (string item in s5)
{
lst1.Items.Add(item);
}
//نمایش آیتم های که وجود ندارند در لیست باکس
foreach (string item in s6)
{
lst2.Items.Add(item);
}

مهرداد صفا
شنبه 16 آذر 1392, 17:03 عصر
با سلام.


var result = list1.Except(list2).Except(list3).Except(list4).To List();
//or
result = list1.Where(i => !list2.Contains(i) && !list3.Contains(i) && !list4.Contains(i)).ToList();

دلتنگ اسمان
شنبه 16 آذر 1392, 17:20 عصر
ممنون از پاسختون.
نمیدونم یه تاپیک دیگه بزنم یا نه؟
توی همین لیستها میشه بر اساس ایندکس ، رشته مورد نظر رو خارج کرد؟ من که هرچی توی متدهاش گشتم پیدا نکردم.مثلا عدد6 رو بدم رشته متناظر این عدد رو بده.

sagggad
شنبه 16 آذر 1392, 17:27 عصر
اگه قوانین رو کامل خونده باشی متوجه میشی که الان باید یه تایپیک جدید بزنی!!:چشمک::چشمک::چشمک:

مهرداد صفا
شنبه 16 آذر 1392, 17:28 عصر
خواهش می کنم.
اگر با استفاده از متود ToList و یا ToArray حاصل را به آرایه و یا لیست تبدیل کنید مشکلی نخواهید داشت.
در هر صورت متود ElementAt جواب شماست.