var listExample = new List<string>(){ "banana", "apple", "lemon", "orange",
"cherry", "pear", "яблоко", "лимон", "груша", "банан", "апельсин", "вишня" };
listExample = listExample.OrderBy(x => x).ToList();
结果是
{ "apple", "banana", "cherry", "lemon", "orange", "pear", "апельсин", "банан", "вишня", "груша", "лимон", "яблоко" }
但是像这样需要先用俄语再用英语点菜
{ "апельсин", "банан", "вишня", "груша", "лимон", "яблоко", "apple", "banana", "cherry", "lemon", "orange", "pear" }
如何使用 OrderBy 获得该结果?
最佳答案
您可以使用 Order 检查作品是否为 latin
。
下面的代码返回所需的输出,它检查单词是否为 IsCyrillic。
var listExample = new List<string>(){ "banana", "apple", "lemon", "orange", "cherry",
"pear", "яблоко", "лимон", "груша", "банан", "апельсин", "вишня" };
var result = listExample.OrderBy(x => x)
.Select(x => new {val = x, isCyrillic = Regex.IsMatch(x, @"\p{IsCyrillic}")})
.OrderBy(x => !x.isCyrillic).Select(x => x.val);
foreach (var str in result)
{
Console.WriteLine(str);
}
检查这个 fiddle 的完整代码 - https://dotnetfiddle.net/9o4FJt
上面程序的输出是
апельсин банан вишня груша лимон яблоко apple banana cherry lemon orange pear
关于c# - 在 LINQ 中使用 OrderBy 首先是西里尔字母,然后是拉丁字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50941895/