نوشته شده توسط
mmbguide
باید سازوکار برنامت رو بررسی کرد ولی شاید بشه کلکسیونی از اشیاء رو نگهداری کنی و در زمان مورد نیاز تبدیل انجام بدی.
مجبور شدم یه کلاس تعریف کنم و نام پرسنل و رده اونها رو توی کلاس بریزم و بعد در هاش تیبل نگهداری کنم.
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;
}