Skip to main content
 首页 » 编程设计

c#之订购 xamarin 形成可观察的集合

2024年02月04日29emanlee

在 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);`