Упорядочение форм ксамарина наблюдаемой коллекции

1
задан Anders Bootsmann Larsen 16 January 2019 в 11:47
поделиться

2 ответа

Я не знаком с FlowObservableCollection<T>, но из того, что я смог найти, он, кажется, является подтипом ObservableCollection<T> Microsoft Docs .

Так как 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);`
0
ответ дан Søren D. Ptæus 16 January 2019 в 11:47
поделиться

Вы можете попробовать это:

   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);
    }
}
0
ответ дан Bruno Caceiro 16 January 2019 в 11:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: