На самом деле все просто:
.OrderBy(a => yy ? a.SectSortOrderNo : default)
Сортировка .OrderBy()
стабильна, что означает, что вы можете "отсортировать" их по постоянному значению и получить тот же порядок, как если бы вы не "сортировали" "them.
Проверьте следующий пример:
IList<int> data = new List<int> { 1, 4, 5, 2, 5, 1, 1, 7};
bool yy = true;
foreach (var v in data.OrderBy(it => yy ? it : default(int))) {
Console.WriteLine(v);
}
Это приведет к ожидаемому результату:
1
1
1
2
4
5
5
7
При изменении переменной yy
на false
Вы сохраните оригинальный заказ:
1
4
5
2
5
1
1
7