-
لطف فورا کمکم کنید.در c#
:n13:من یک لیست از نوع رشته ای دارم و میخواهم آنها را براساس نزول قسمت rankکه یک عددdouble می باشد،مرتب کنم و i نیز یک عدد ازنوع int است
("document " + i + " " + rank)
و اینهم بگم شاید در پیدا کردن جوابم کمکتون کنه که در اینجا اعداد rank دقیقا با سه فاصله از iدارند و خود i فقط یک فاصله ازdocumentقرار دارد
مثلا اینطوری باید بشهdocument 2 7.4
document 12 6.8
document 1 4.2
-
سلام
راه حل های زیادی دارد:
کد:
using System.Linq;
//...
string[] inArray1 = new string[] {
"document 12 6.8",
"document 1 4.2",
"document 2 7.4" };
var sortArray1 = inArray1.OrderByDescending(s => s.Substring(s.LastIndexOf(' '))).ToList();
یا ...
کد:
using System.Linq;
//...
string[] inArray2 = new string[] {
"document 12 6.8",
"document 1 4.2",
"document 2 7.4" };
var sortArray2 = inArray2.OrderByDescending(s => float.Parse(s.Substring(s.LastIndexOf(' ') + 1))).ToList();
و یا اگر اطلاعات تان ساختار یافته تر باشد میتوانید قبل از متنی شدن آنها عملیات مرتب سازی را انجام دهید که این عمل منطقی تر خواهد بود:
کد:
using System.Linq;
public struct Item
{
public string Text;
public int I;
public float Rand;
public override string ToString()
{
return string.Format("{0} {1} {2:0.0}", this.Text, this.I, this.Rand);
}
}
//...
var inArray3 = new Item[] {
new Item(){ Text = "document", I = 12, Rand = 6.8f},
new Item(){ Text = "document", I = 1, Rand = 4.2f},
new Item(){ Text = "document", I = 2, Rand = 7.4f}
};
//var sortArray3 = inArray3.OrderByDescending(x => x.Rand).ToList();
//var strArray3 = sortArray3.Select(x => x.ToString()).ToList();
var strArray3 = inArray3.OrderByDescending(x => x.Rand).Select(x => x.ToString()).ToList();
البته گمانم شما
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
دیگری هم داشته اید...
موفق باشید.