你得到你,因爲你的Order
是string
輸出。爲了證明這一點,該樣品表明你得到正確的輸出時,它是一個整數
void Main()
{
var list = new List<Project>() { new Project() { Order = 1, Id = 147, Name = "Summary" }, new Project() { Order = -9, Id = 211, Name = "Software Functionality" } };
int value= list.OrderByDescending(a => a.Order).ThenBy(a => a.Name).ToList().First().Id;
Console.WriteLine (value);
}
public class Project
{
public int Order {get;set;}
public int Id {get;set;}
public string Name {get;set;}
}
但是,如果你確實需要它作爲一個字符串:爲什麼沒有這樣的工作?
查看CompareOptions
enum。更具體地說:CompareOptions.IgnoreSymbols
。
指示字符串比較必須忽略符號,如空格字符,標點,貨幣符號,百分號,數學符號,連字符,等等。這也被解釋爲here。
這實質上使得你的 a 9
。
您可以通過創建自己的比較器,並通過它繞過這一點很容易你需要什麼:
public class CustomComparer : IComparer<string>
{
public int Compare(string x,string y)
{
return CultureInfo.CurrentCulture.CompareInfo.Compare(x, y, CompareOptions.Ordinal);
}
}
可以用來作爲
new[] {"1", "-9"}.OrderByDescending(x => x, new CustomComparer())
'Order'是數字還是字符串類型? – 2015-01-20 21:08:10
我覺得''是'chr(45)'沒關係。 – 2015-01-20 21:11:15
對不起,只是複製粘貼錯誤,它是一個字符串。 – user1989 2015-01-20 21:33:06