我有一个List,我依旧在一个属性上订购。
不幸的是,数据库设置(我猜)在获取数据时没有正确处理国家字符..虽然我不能改变(不是我的数据库),所以我需要直接解决这个问题。因此,我简化了下面的例子。
var x1 = new Shop() {city = "Århus"};
var x2 = new Shop() { city = "Ans" };
var x3 = new Shop() { city = "Balle" };
list.Add(x1);
list.Add(x2);
list.Add(x3);
list = list.OrderBy(a => a.city).ToList();
//Result:
// Århus, Ans, Balle
// Should be:
// Ans, Balle, Århus
评论者应该解释我的问题:“Å”是丹麦字符集中的最后一个字母
我无法控制应用程序设置,但是我可以强制OrderBy使用特定的字符集进行排序吗?
提前致谢,
Steen Pedersen
答案 0 :(得分:5)
您可以在订购时指定文化。例如:
class Program
{
static void Main()
{
// Set Denmark as current culture
Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
var cities = new[] { "Århus", "Ans", "Balle" };
// When ordering the cities indicate that you want to
// take the current culture into account
cities = cities.OrderBy(a => a, StringComparer.CurrentCulture).ToArray();
foreach (var city in cities)
{
Console.WriteLine(city);
}
}
}
打印:
Ans
Balle
Århus