Отфильтруйте строки через StartsWith, отсортируйте OrderByDescending и материализуйте результат в ResultList. Явно задайте правила сравнения строк.
Отбор и обратная сортировка строк из коллекции по условию
Отфильтруйте строки через StartsWith, отсортируйте OrderByDescending и материализуйте результат в ResultList. Явно задайте правила сравнения строк.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
В классе объявлены два свойства:
-
SourceList – исходный набор строк, например: {"string", "string2", "string3"}
-
ResultList – должен быть заполнен элементами из SourceList, которые:
- Начинаются с буквы s;
- Упорядочены по убыванию. Требуется реализовать метод Method1, который сформирует ResultList согласно указанным правилам.
public class SomeClass
{
public List<string> SourceList { get; set; } = new List<string>() { "string", "string2", "string3" };
public void Method1()
{
var filtered = new List<string>(SourceList);
// здесь должна быть логика фильтрации и сортировки
}
}
Ответ
Отфильтруйте строки через StartsWith, отсортируйте OrderByDescending и материализуйте результат в ResultList. Явно задайте правила сравнения строк.
Добавьте свойство и метод:
public List<string> ResultList { get; private set; } = new();
public void Method1()
{
ResultList = SourceList
.Where(s => s is not null && s.StartsWith("s", StringComparison.Ordinal))
.OrderByDescending(s => s, StringComparer.Ordinal)
.ToList();
}
Для примера результат — string3, string2, string. Ordinal означает посимвольное сравнение с учётом регистра. Если S тоже подходит, согласуйте OrdinalIgnoreCase. Исходная коллекция не меняется; сортировка отобранных k элементов требует O(k log k) времени.