C# Linq orderby culture(丹麦语,xE6;&xF8;&xE5;)

C# Linq orderby culture(丹麦语,xE6;&xF8;&xE5;),c#,asp.net-mvc,linq,entity-framework,C#,Asp.net Mvc,Linq,Entity Framework,我的orderby linq表达式有问题。它以错误的顺序生成输出。我来自丹麦,正在创建一个丹麦网站,因此订单必须准确无误 我的问题是: var model = (from w in db.News orderby w.Title select w).ToList(); 输出为: 1, 123 2, æøå 3, hallo 4, know 正确的顺序应如下所示: 1, 123 2, hallo 3, know 4, æøå 如

我的orderby linq表达式有问题。它以错误的顺序生成输出。我来自丹麦,正在创建一个丹麦网站,因此订单必须准确无误

我的问题是:

var model = (from w in db.News
                orderby w.Title
                select w).ToList();
输出为:

1, 123
2, æøå
3, hallo
4, know
正确的顺序应如下所示:

1, 123
2, hallo
3, know
4, æøå

如何更正此问题?

如果使用流畅的Linq语法,可以将字符串比较器传递给
OrderBy
方法:

var model = db.News.OrderBy(w => w.Title, StringComparer.InvariantCulture)
              .ToList();
顺便说一句,您可以使用
StringComparer创建特定于区域性的字符串比较器。create
方法:

StringComparer.Create(new CultureInfo("da-DK"), true)

嘿,谢谢。但是,这会导致错误。说:“LINQ to Entities不识别方法System.LINQ.IOrderedQueryable…….方法,并且此方法无法转换为存储表达式。”@Kasperhydalpedersen不幸的是,LINQ to Entities不支持使用customer comparer进行排序,因为它无法将其转换为SQL。我建议您通过添加
aseneumerable()
call:
db.News.aseneumerable().OrderBy(…)
Aha,好吧,aseneumerable()部分成功了。谢谢你的帮助,因为这个问题,我可能整晚都没睡:)真是太感谢你了。@KasperHyldalPedersen不过,在数据库中选择丹麦或丹麦-挪威的排序规则是很自然的。在这种情况下,数据库应该按照您想要的方式进行排序,而不必在客户端执行操作。啊哈,我明白了,现在我只是在使用SqlServer Compact。。因此,当我将来扩展到托管数据库(可能是丹麦语)时,这可能会得到修复?如果排序确实是在数据库中完成的,那么SQL server的排序规则是什么?我想你应该是丹麦语或丹麦语-挪威语。