У меня есть коллекция, которая сортируется произвольно на основе условий. Мой класс имеет свойство «Ordinal» int, которое я хотел бы динамически заполнить после того, как коллекция будет упорядочена. Вот то, что я до сих пор:Динамически увеличиваемое свойство для коллекции IEnumerable?
var result = new List<MyClass>();
foreach (var x in items)
{
x.TestA = x.TestA;
x.TestB = x.TestB;
x.TestC = x.TestC;
}
...
var ordered = result.AsEnumerable();
if (...) ordered.OrderBy(x => x.TestA);
else if (...) ordered.OrderBy(x => x.TestB);
else if (...) ordered.OrderBy(x => x.TestC);
...
return ordered.ToList()
Перед возвращением упорядоченного списка, что это лучший способ, чтобы заполнить «Порядковое» свойство объекта «MyClass» в коллекции с его индексом местом? Я не хочу создавать еще один цикл в конце, так как у меня тысячи записей. Это единственный способ? Спасибо за любую помощь или советую.
'OrderBy' (как и другие методы' Enumerable', которые возвращают 'IEnumerable'), не влияют на последовательность источников. Ваш код всегда будет возвращать неупорядоченную последовательность. Кроме того, 'List ' уже есть 'IEnumerable ', следовательно, 'result.AsEnumerable()' является излишним. Вам нужно что-то вроде 'IEnumerable ordered = result; если (условие 1) упорядочено = упорядочено.OrderBy (x => x.TestA); // else if (...) и т. д. –
Dennis