На самом деле, еще один заголовок для вопроса: Как найти персонажа с самым высоким алфавитным значением для текущей культуры?Закажите коллекцию французских строк и оставьте пустые записи в конце
Взгляните на следующий код:
static void Main(string[] args)
{
var input = new[] { "cote", "côte", "coté", "", "côté" };
var maxString = new string(new[] { char.MaxValue });
var byEnUsCulture = input.OrderBy(i =>
(String.IsNullOrEmpty(i)) ? maxString : i,
StringComparer.Create(new CultureInfo("en-US"), false)).ToList();
var byFrFrCulture = input.OrderBy(i =>
(String.IsNullOrEmpty(i)) ? maxString : i,
StringComparer.Create(new CultureInfo("fr-FR"), false)).ToList();
var byOrdinal = input.OrderBy(i =>
(String.IsNullOrEmpty(i)) ? maxString : i,
StringComparer.Ordinal).ToList();
foreach (var words in new[] { byEnUsCulture, byFrFrCulture, byOrdinal })
{
foreach (var word in words)
{
Console.Write("{0} ", (string.IsNullOrEmpty(word)) ? "xxxx" : word);
}
Console.WriteLine();
}
}
Выход вышеперечисленное:
xxxx cote coté côte côté
xxxx cote côte coté côté
cote coté côte côté xxxx
Но то, что я пытаюсь получить это:
cote côte coté côté xxxx
Можно ли заказывать вышеперечисленные слова с помощью информации культуры fr-FR
и по-прежнему выводить пустой (заменяется на xxxx
в выходных данных) в конце коллекции, все, что только с помощью OrderBy
?
Примечание: Here - ссылка для предполагаемого заказа.
Если вы знаете, что '«»' записи должны идти к концу, вы можете не только извлекать и объединить их после заказа с помощью 'TakeWhile (p => string.IsNullOrEmpty (p)'? – Gusdor
'cote côte coté côté' Я как бы растерялся, как вы можете получить этот заказ ... если сортировка работает над символами слева направо, первые два указывают на то, что' ô> o', тогда как вторая и третья запись указывает, что 'ô
oerkelens
Действительно, я ничего не пропустил, спасибо за эту ссылку. (Я буду воздерживаться от каких-либо дальнейших замечаний о французском порядке сортировки ... но акцент акваланса? Ну, вы живете, вы учитесь :)) – oerkelens