You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按ID对ObservableCollection<CariHesaplarPickerItems>排序?

对ObservableCollection按ID排序的实现方法

方法一:先排序数据源再填充集合

你可以在接口返回数据反序列化后,先对原始数据列表按ID排序,再将排序后的结果添加到ObservableCollection中,这种方式直接高效:

修改你的GetAllData方法,在处理数据前先排序:

private async Task GetAllData() 
{  
  var resCariGrup = await client.ExecuteAsync(request, Method.Post);
  var dataCariGrup = JsonConvert.DeserializeObject<RootCariGrup>(resCariGrup.Content);

  _pickerlistItemsSource.Clear();
  pickerListItems.Clear();
  pickerListItems.Add("Hepsi");

  // 对返回的data列表按ID升序排序
  var sortedItems = dataCariGrup.data.OrderBy(item => item.id).ToList();

  // 遍历排序后的列表填充集合
  foreach (var item in sortedItems)
  {
      _pickerlistItemsSource.Add(new CariHesaplarPickerItems
      {
          ID = item.id,
          grupAd = item.grup,
          kullaniciAd = item.kullaniciAdi,
          subeAd = item.subeAdi
      });
      // 同步更新pickerListItems(根据你的业务需求调整)
      pickerListItems.Add(item.grup);
  }

  pickerCariListe.ItemsSource = pickerListItems;
  ...
}

方法二:给ObservableCollection添加排序扩展方法

如果需要对已填充好的ObservableCollection直接排序,可以通过扩展方法实现,方便后续复用:

先定义扩展类:

public static class ObservableCollectionExtensions
{
    public static void Sort<T>(this ObservableCollection<T> collection, Comparison<T> comparison)
    {
        var sortedList = collection.OrderBy(item => item, new Comparer<T>(comparison)).ToList();
        collection.Clear();
        foreach (var item in sortedList)
        {
            collection.Add(item);
        }
    }

    private class Comparer<T> : IComparer<T>
    {
        private readonly Comparison<T> _comparison;

        public Comparer(Comparison<T> comparison)
        {
            _comparison = comparison;
        }

        public int Compare(T x, T y)
        {
            return _comparison(x, y);
        }
    }
}

在需要排序的时候直接调用:

// 按ID升序排序
_pickerlistItemsSource.Sort((x, y) => x.ID.CompareTo(y.ID));

// 若要降序排序,只需调换比较顺序
// _pickerlistItemsSource.Sort((x, y) => y.ID.CompareTo(x.ID));

说明

ObservableCollection本身没有内置的排序方法,上述两种方法分别对应提前排序数据源和扩展集合功能两种场景,你可以根据业务需求选择合适的方式。

内容的提问来源于stack exchange,提问作者BySuspect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 09:54:20