View Full Version : سوال: نگهداری دو نوع متغیر در یک کالکشن
SardareEshgh
چهارشنبه 05 تیر 1398, 20:52 عصر
سلام
تعدادی پرسنل را در یک لیست دارم که ممکن است تکرار پذیر باشند و همچنین در لیست دیگری همین پرسنل شماره رده هم دارند که باز هم ممکن است این عدد تکرار پذیر باشد.
اسامی پرسنل و رده های مربوطه برای هر بخش در یک شیت اکسل قرار دارند اما چون بخشهای مختلفی خوانده میشود میخوام با تجمیع اسامی و شماره رده و سپس مرتب سازی بر اساس رده کمترین و بیشتری رده و پرسنل مربوطه به اون رده را استخراج کنم.
به دلیل تکرار پذیری عناصر از هاش تیبل و دیکشنری نمیشه استفاده کرد.
ممنون
ROSTAM2
پنج شنبه 06 تیر 1398, 09:42 صبح
سلام. بالاخره که کد پرسنلی تکراری نمی شه!
mmbguide
پنج شنبه 06 تیر 1398, 17:37 عصر
باید سازوکار برنامت رو بررسی کرد ولی شاید بشه کلکسیونی از اشیاء رو نگهداری کنی و در زمان مورد نیاز تبدیل انجام بدی.
SardareEshgh
پنج شنبه 06 تیر 1398, 22:23 عصر
سلام. کد پرسنلی در کار نیست. فقط اسم پرسنل و رده پرسنل و جنسیت مطرحه.
SardareEshgh
پنج شنبه 06 تیر 1398, 22:30 عصر
باید سازوکار برنامت رو بررسی کرد ولی شاید بشه کلکسیونی از اشیاء رو نگهداری کنی و در زمان مورد نیاز تبدیل انجام بدی.
مجبور شدم یه کلاس تعریف کنم و نام پرسنل و رده اونها رو توی کلاس بریزم و بعد در هاش تیبل نگهداری کنم.
class Person
{
public int Rank;
public string namefamily;
}
Hashtable people = new Hashtable();
for (int t = 1; t <= RV.EndRow; t++)
{
Personcount += t;
string name = WordSpel.TextSplit(((Range)RV.range_Nurse.Cells[t, 2]).Value2.ToString());
var Rank = ((Range)RV.range_Nurse.Cells[t, 4]).Value2;
int rank = 0;
if (Rank != null)//ستون گروه ارتقا و نام پرسنل
rank = metod.SetRank(Rank.ToString().Trim());
Person Person = new Person();
Person.Rank = rank;
Person.namefamily = name;
people.Add(Personcount, Person);
}
کلید اصلی هم شد شمارنده خود حلقه!
و مرتب سازی و بعد هم استخراج مینیمم و ماکزیمم :
// this is the original answer
var result = people.Cast<DictionaryEntry>().OrderBy(kvp => ((Person)kvp.Value).Rank);
// now convert it to an array
var listRank = result.ToArray();
for (int t = 0; t < listRank.Length; t++)
if (ListSheeft_Group.Contains(((Person)listRank[t].Value).namefamily))
{
nurse = ((Person)listRank[t].Value).namefamily;
break;
}
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.