PDA

View Full Version : مرتب کردن list دو بعدی



narges_j
پنج شنبه 04 مهر 1392, 15:04 عصر
سلام من یک لیست دارم که به صورت زیر تعریف شده.و هر ایتم ان در واقع 3 مقدار میگیره.


public List<List<string>> Rule3D = new List<List<string>>();
Rule3D.Add(new List<string>(){txtLHS.Text,txtRHS.Text,txtConf.Text});

دوتا سوال داشتم
1-دو مقدار اول لیست رشته و مقدار سوم عدد هست.چطور میتونم ذخیره کنم الان همه را رشته میگیره.
2-میخوام براساس مقدار سوم لیست را مرتب کنم.چطور میتونم این کار انجام بدم

لطفا راهنماییم کنید.

Kubuntu
پنج شنبه 04 مهر 1392, 16:55 عصر
مثلا می خوای بگی اگه مقدار سوم 0 بود صعودی اگه یک بود نزولی؟
می خوای فقط داده های لیست داخلی مرتب بشه یا هردو؟

narges_j
پنج شنبه 04 مهر 1392, 17:08 عصر
فرض کنید
l

list[0]="a","b","5"
list[1]="d","k","8"

میخوام لیست بصورت نزولی مرتب بشه یعنی اول لیست 1 و بعد لیست 0
کل لیست مرتب بشه میخوام

Kubuntu
پنج شنبه 04 مهر 1392, 17:23 عصر
جواب شما در تاپیک زیر هستش اگه متوجه نشدی چجوری باید ویرایشش کنی بهم بگو
sort generic List (http://stackoverflow.com/questions/188141/c-sharp-list-orderby-alphabetical-order)

narges_j
پنج شنبه 04 مهر 1392, 17:30 عصر
راستش قبلا این تاپیک را دیده بودم ولی متوجه نشدم
مقادیر من اسم ندارند که بخوام بهشون دسترسی داشته باشم.یعنی باید با اندیسشون کوئری بزنم.در این تاپیک که معرفی کردید از یک کلاس داره استفاده میکنه که شامل نام و فامیل هست پس راحت میتونه بهشون دسترسی داشته باشه
متاسفانه نتونستم استفاده کنم

Mahmoud.Afrad
پنج شنبه 04 مهر 1392, 18:18 عصر
روند اشتباهی رو انتخاب کردی.
یک کلاس ایجاد کن و پراپرتی های مناسب رو توش تعریف کن. بعد یک لیست از این کلاس ایجاد کن. برای اضافه گردن هم از کلاس شئ ایجاد کن و به لیست اضافه کن. برای مرتب سازی هم روش های مختلفی میتونی روی همچین لیستی اعمال کنی.

narges_j
پنج شنبه 04 مهر 1392, 18:24 عصر
خوب الگوریتم طوری که مجبورم اینطوری رفتار کنم.
من یکسری قانون دارم و هر قانونی یک confidence
هر قانونی طرف چپ و طرف راست داره
قانون توسط کاربر وارد میشه
باید قانون ها را براساس کانفیدنسشون مرتب کنم
به نظر شما روش بهتر چیه؟

Kubuntu
پنج شنبه 04 مهر 1392, 18:28 عصر
Rule3D.Sort((x, y) => string.Compare(x[0], y[0]));

narges_j
پنج شنبه 04 مهر 1392, 19:03 عصر
جواب داد خیلی خیلی ممنون
فقط میشه یه توضیح کوچک هم بدید که x و y به کجا اشاره میکنن و چرا 0 را انتخاب کردید؟

Kubuntu
پنج شنبه 04 مهر 1392, 19:20 عصر
x به سطر اول و y به سطر دوم اشاره می کنه وقتی می گی [x[0 یعنی از آرایه x اولین عنصر را انتخاب کن و با اولین عنصر y مقایسه کن

narges_j
جمعه 05 مهر 1392, 11:47 صبح
var newList = Rule3D.OrderByDescending(x => x[0]).ToList();