比方说,我有一个字符串列表与瑞典的话:banan,äpple,apelsin,druva.
现在我想对这个列表进行排序(请记住,这是真实查询的一个非常简化的版本):
var result = from f in fruits // The list mentioned above
orderby f
select f
Run Code Online (Sandbox Code Playgroud)
这会给我:apelsin,äpple,banan,druva.然而,根据瑞典的字母,我应该得到:apelsin,banan,druva,äpple
我尝试过改变System.Threading.Thread.CurrentThread.CurrentCulture,sv-SE但这似乎并没有真正影响它.我是否必须编写自己的lambda函数并使用.OrderBy(...)或者我还能做些什么来保持LINQ完好无损?
Jon*_*eet 37
您不能使用查询表达式执行此操作,但可以使用显式点表示法执行此操作:
var result = fruits.OrderBy(f => f, StringComparer.CurrentCulture);
Run Code Online (Sandbox Code Playgroud)
应该这样做,假设线程的当前文化是正确的.或者:
CultureInfo culture = new CultureInfo("sv-SE");
var result = fruits.OrderBy(f => f, StringComparer.Create(culture, false));
Run Code Online (Sandbox Code Playgroud)