Я не знаком с FlowObservableCollection<T>
, но из того, что я смог найти, он, кажется, является подтипом ObservableCollection<T>
Microsoft Docs sup>.
Так как ObservableCollection<T>
сам по себе является подтипом Collection<T>
и, следовательно, реализует IEnumerable<T>
, у вас не должно возникнуть проблем с использованием его методов расширения , например, OrderBy
.
Я могу видеть, что где-то люди используют:
list.OrderByDescending(x => DateTime.Parse(x)).ToList();
Моя ценность, по которой я хочу отсортировать, - это подзначение типа: mycollection.group.Myvalue
< / blockquote>Вы знакомы с лямбда-выражениями , использованными в запросе LINQ вашего
OrderByDescending()
примера?Если вы этого не сделаете, в [ 119] термин
x
относится к элементу в списке, и то, что вы указываете справа от стрелки=>
, является вашим ключом для упорядочения.Поэтому, если вы хотите упорядочить по другому значению, вы можете просто написать что-то вроде
myCollection.OrderByDescending(x => x.MyProperty);
. Обратите внимание, что вы можете использовать термины, отличные отx
, если они одинаковы по обе стороны стрелки, например,myCollection.OrderByDescending(myElement => myElement.MyProperty);
Наконец, обратите внимание, что вызов
myCollection.OrderByDescending()
возвращает новыйIEnumerable
с элементами, найденными вmyCollection
, и не меняет самmyCollection
.Вы не можете разыграть
IEnumerable<T>
наFlowObservableCollection<T>
. Поэтому, если вам нужен заказанныйFlowObservableCollection<T>
, вам нужно создать новый экземпляр, используя заказанныйIEnumerable
в качестве входа.В вашем случае это может выглядеть так:
var orderedElements = myCollection.OrderByDescending(x => x.MyProperty); var orderedCollection = new FlowObservableCollection<RootObject2>(orderedElements);`
Вы можете попробовать это:
Collection = new ObservableCollection(Collection.OrderBy(x=>x.Date).ToList());
Или адаптировать этот метод:
public static void Sort<T>(this ObservableCollection<T> collection, Comparison<T> comparison)
{
var sortableList = new List<T>(collection);
sortableList.Sort(comparison);
for (int i = 0; i < sortableList.Count; i++)
{
collection.Move(collection.IndexOf(sortableList[i]), i);
}
}