У меня есть список, который нужно упорядочить определенным образом. Я в настоящее время решил это следующим образом:
var files = GetFiles()
.OrderByDescending(x => x.Filename.StartsWith("ProjectDescription_"))
.ThenByDescending(x => x.Filename.StartsWith("Budget_"))
.ThenByDescending(x => x.Filename.StartsWith("CV_"))
.ToArray();
Файлы будут объединены в один файл PDF, и дело здесь в том, что определенные файлы должны начинаться в начале, а остальные - в конце.
Мне интересно, есть ли лучший способ написать этот "шаблон", потому что он чувствует себя довольно бла-бла-бла-бла-бла-бла, если бы было больше случаев.
Вещи, которые я хотел бы избежать, но не знаю, как: Несколько проходов по списку, больше StartsWith
вызовов на файл, чем необходимо, больше кода, чем необходимо, и т.д.
В принципе, мне кажется, что я хотел бы использовать OrderByPredicates
вещь, которая умело выполнила эти критерии и API которой был использован примерно так:
var predicates = new Func<boolean, File>[] {
x => x.Filename == "First"
x => x.Filename.StartsWith("Foo_"),
x => x.Filename.StartsWith("Bar_"),
};
var files = GetFiles()
.OrderByPredicates(predicates)
.ThenBy(x => x.Filename);