在 xamarin 表单中,我有一个可观察的 wordpress 帖子集合。
我想按集合中的特定值对集合进行排序?
我如何才能在 Xamarin 表单/c# 中这样做?
我可以看到有人在使用:
list.OrderByDescending(x => DateTime.Parse(x)).ToList();
但这并没有使用一个 Observable 集合或者这个集合中的特定值来排序。
我对象的填充是这样的:
FlowObservableCollection<RootObject2> result = JsonConvert.DeserializeObject<FlowObservableCollection<RootObject2>>(await posts.Content.ReadAsStringAsync());
有没有人有对我的数组进行排序的解决方案?
我想排序的值是一个子值,例如:mycollection.group.Myvalue
提前致谢!
请您参考如下方法:
我不熟悉FlowObservableCollection<T>但据我所知,它似乎是 ObservableCollection<T> 的子类型 Microsoft Docs .
自 ObservableCollection<T>本身是 Collection<T> 的子类型因此实现了 IEnumerable<T>使用它的 extension methods 应该没有任何问题,例如OrderBy .
I can see somewhere are people using:
list.OrderByDescending(x => DateTime.Parse(x)).ToList();My value I wanna sort by is a sub value like: mycollection.group.Myvalue
你熟悉lambda expressions吗?在 LINQ query 中使用你的OrderByDescending()例子?
如果你没有,在 list.OrderByDescending(x => DateTime.Parse(x)).ToList();术语 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);`
