你得到你,因为你的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