مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
سلام . خسته نباشید . میخوام آیتمهای دو تا لیست باکس رو با هم مقایسه کنم و در صورتی که ایتمهای لیست باکس اولی و دومی در مواردی متفاوت بودن یا آیتمی کم و زیاد بود ، اون آیتمها رو در بیاره . ترتیب مهم نیست و قرار نیست تریبشون مثل هم باشه . محتویات لیست اول باید در لیست دوم باشه نبود ، با یه مسیج باکس نمایش بده . چیکار باید بکنم ؟
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
یک راه این است که کار را به SQL Server بسپارید یعنی item های دو لیست را در دو جدول درج کنید سپس با استفاده از عملگر های جبری/مجموعه ای یا با استفاده از عملگر merge در SQL Server 2008 این کار را انجام دهید.
(برای اطلاعات بیشتر یک تاپیک در تالار SQL ایجاد کنید)
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
آخه برنامه به دیتابیس تقریبا مربوط نیست و همه چی سرپایی میخوام باشه .
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
در یک پست مشابه هم چنین مشکلی بود.
از HashSet و یا LINQ میتونین استفاده کنین اگر نمیخواین خودتون دستی این کار رو انچام بدین.
موفق باشید
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
سلام ، اگه تعداد آیتم های دو لیست باکس با هم برابر باشند :
int n = listBox1.Items.Count;//listbox2.items.count is also = n
string str="";
for (int i = 0; i < n; i++)
{
if (listBox1.Items[i].ToString() == listBox2.Items[i].ToString())
continue;
else
str += listBox1.Items[i].ToString() + " , " + listBox2.Items[i].ToString() + "\n";
}
MessageBox.Show(str);
http://salarcpp.persiangig.com/listbox.jpg
*) اگر تعداد آیتم ها برابر هم نباشند ، باز میشه با حلقه اینکارو انجام داد ولی با یکسری تغییرات !
موفق و پیروز باشید !!!
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
ممنون از همه . سالار اینو انجام میدم فکر کنم خودشه . میتونم برای برابر شدنشون خودم مقادیری به صورت خودکار اضافه کنم که بشه از این کد استفاده کرد. اگر پیشنهاد دیگه ای هم بود استقبال میکنم .
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
نقل قول:
نوشته شده توسط
salar_cpp_cs
سلام ، اگه تعداد آیتم های دو لیست باکس با هم برابر باشند :
int n = listBox1.Items.Count;//listbox2.items.count is also = n
string str="";
for (int i = 0; i < n; i++)
{
if (listBox1.Items[i].ToString() == listBox2.Items[i].ToString())
continue;
else
str += listBox1.Items[i].ToString() + " , " + listBox2.Items[i].ToString() + "\n";
}
MessageBox.Show(str);
*) اگر تعداد آیتم ها برابر هم نباشند ، باز میشه با حلقه اینکارو انجام داد ولی با یکسری تغییرات !
موفق و پیروز باشید !!!
کد ترتیبی عمل میکنه سالار. یعنی اعضای متناظر رو مقایسه میکنه . من میخوام عضو آ از لیست اول رو با هر عضو از لیست دوم مقایسه کنه .
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
نقل قول:
نوشته شده توسط
dr_ghezavat
کد ترتیبی عمل میکنه سالار. یعنی اعضای متناظر رو مقایسه میکنه . من میخوام عضو آ از لیست اول رو با هر عضو از لیست دوم مقایسه کنه .
خب دوست من میتونی تو کد بالا با یه سری تغییرات مثل اضافه کردن حلقه for each برای بررسی لیست دوم این کارو انجام بدی. (منظورم اینه که دو تا حلقه داشته باشی)
موفق باشی و پیروز.
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
نقل قول:
نوشته شده توسط
dr_ghezavat
کد ترتیبی عمل میکنه سالار. یعنی اعضای متناظر رو مقایسه میکنه . من میخوام عضو آ از لیست اول رو با هر عضو از لیست دوم مقایسه کنه .
با یک تغییر جزیی میشه اینکارو انجام داد :
string str = "";
int n = listBox1.Items.Count;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (listBox1.Items[i].ToString() == listBox2.Items[j].ToString())
continue;
else
str += listBox1.Items[i].ToString() + " , " + listBox2.Items[j].ToString() + "\n";
}
}
MessageBox.Show(str);
http://salarcpp.persiangig.com/list2.jpg
موفق و پیروز باشید !!!
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
بازم نشد . ببینید این کد منه . میخوام کد مورد نظر یه چیزی شبیه این باشه ولی خطی که قرمز نوشته شده رو نمیدونم به جاش چی بنویسم که خطا نده اینو نوشتم که منظورمو برسونم :
private void button2_Click(object sender, EventArgs e)
{
int subscribersCount=listBox1.Items.Count;
int subscribtionCount = listBox2.Items.Count;
string blackList;
for (int subscriberIndex = 0;
subscriberIndex < subscribersCount;
subscriberIndex++)
{
string[] subscriberName =listBox1.Items[subscriberIndex].ToString();
foreach (string moshtarakName in subscriberName)
{
for (int subscribtionIndex = 0;
subscribtionIndex < subscribtionCount;
subscribtionIndex++)
{
if (moshtarakName == listBox2.Items[subscribtionIndex].ToString())
continue;
else
blackList += moshtarakName;
}
}
}
MessageBox.Show(blackList + "کسانی هستند که در حال حاضر شما مشترکشان نیستید");
}
من کد شمارو به این صورت تغییر دادم ولی نتیجه شد تصویر :
int subscribersCount = listBox1.Items.Count;
string str = "";
for (int i = 0; i < subscribersCount; i++)
{
for (int j = 0; j < subscribersCount; j++)
{
if (listBox1.Items[i].ToString() == listBox2.Items[j].ToString())
continue;
else
str += listBox1.Items[i].ToString()+ "\n";
}
}
MessageBox.Show(str);
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
در واقع میخوام نتیجه این باشه:
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
دوست عزیز ، کاش از اول همین عکس رو میذاشتی ، تا موضوع روشنتر بشه ، با این حال من
واسه این مورد هم کدشو برات نوشتم :
کد مورد نظر :
string str="";
bool res=true;
foreach (object obj in listBox1.Items)
{
foreach (object obj2 in listBox2.Items)
{
if (obj.ToString() == obj2.ToString())
{
res = false;
break;
}
}
if (res)
{
str += obj.ToString() + "\n";
}
}
MessageBox.Show(str);
موفق و پیروز باشید !!!
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
مثه اینکه این مشکل حل بشو نیست . آقا من وقتی آیتمهای جدیدی به لیستباکس اضافه میکنم و دوباره تست میکنم اطلاعاتی که نشون میده بروز نیست . یعنی باز همون میلاد و حسن رو نشون میده .
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
من خودم هم دارم تلاش میکنم ولی هنوز مشغولم حلقه هارو گز میکنم و به نتیجه ای نرسیدم .
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
یافتم یافتم !!!!!
for (int i= 0; i< listBox1.Items.Count; i++)
{
for (int j = 0; j < listBox2.Items.Count; j++)
{
if (listBox1.Items[i].ToString() ==listBox2.Items[j].ToString() )
{
break;
}
else
if ((j == listBox2.Items.Count - 1)&&(listBox1.Items[i].ToString() != listBox2.Items[j].ToString()))
{
if (listBox1.Items[i].ToString() != listBox1.Items[j].ToString())
blackList += listBox1.Items[i].ToString() + "\n";
}
}
}
نقل قول: مقایسه آیتمهای دو لیست باکس و برگرداندن آیتمهای غیر همسان
یک non generic collection میخواستم
که هم int و هم string رو ذخیره کنه.
ساختارش چه شکلی هست؟
Non-Generic
ArrayList
Hashtable
SortedList
Queue
Stack
IEnumerable
IList
CollectionBase
ReadOnlyCollectionBase
|
لینک هایی هم پیدا کردم اما متوجه نشدم.
http://blogs.msdn.com/b/kcwalina/arc...llections.aspx
https://msdn.microsoft.com/en-us/library/ms379564.aspx
http://www.csharp-station.com/Tutorial/CSharp/Lesson20
https://www.simple-talk.com/blogs/20...c-collections/
این موارد زیر رو سرچ کردم متاسفانه مثالی پیدا نکردم.
non generic collection in C#
stack non generic collection in C# with example
Queue non generic collection in C# with example
Hashtable non generic collection in C# with example
یک مثال میخوام که شبیه این:
Stack myStack = new Stack();
myStack.Push("Hello");
myStack.Push("World");
myStack.Push("!");
اما 2 یا چند نوع داده را ذخیره کنه نه فقط مثلا int
ساختار یک non generic collection چه شکلی هست؟