【问题标题】:How to keep a order like this in ObservableCollection? [duplicate]如何在 ObservableCollection 中保持这样的订单? [复制]
【发布时间】:2016-08-30 01:03:34
【问题描述】:

我刚刚得到了一些这样的数据

[
    {
        "ID":2,
        "NOTAMRec":"C16-0001",
        "DeliverDate":"310827",
        "BeginDate":"1601010130",
        "ExpireDate":"1606070630",
        "Priority":"GG",
        "ItemA":"LOL",
        "OriginalNotamID":2,
        "SelectedNotamColor":null
    },
    {
        "ID":8,
        "NOTAMRec":"C16-0004",
        "DeliverDate":"230705",
        "BeginDate":"1602231505",
        "ExpireDate":"1606312359 EST",
        "Priority":"GG",
        "ItemA":"LOVEU",
        "OriginalNotamID":8,
        "SelectedNotamColor":null
    },
    {
        "ID":9,
        "NOTAMRec":"C16-0005",
        "DeliverDate":"240703",
        "BeginDate":"1602241502",
        "ExpireDate":"1606312359 EST",
        "Priority":"GG",
        "ItemA":"LOVEU",
        "OriginalNotamID":9,
        "SelectedNotamColor":null
    }
]

然后我把它转换成一个模型

Public Class MyModel 
{
  Public long ID{get;set;}
  public string NOTAMRec{get;set;}
  ......
  public string ItemA{get;set;}
}

并将其添加到 ObservableCollection 中。

问题 - 我想按此顺序对我的收藏进行排序。无论我将多少个 MyModel 添加到此集合中,ItemA 等于“LOVEU”的模型将始终位于此列表的顶部,因此当我将此列表显示给我的用户时,他们总是会首先看到带有 LOVEU 的 MyModel地方。

谢谢!

【问题讨论】:

    标签: c# wpf observablecollection


    【解决方案1】:

    这可能不是最好的解决方案,但这应该可行

    var query1 = MyCollection.Where(w => w.ItemA == "LOVEU");
    var query2 = MyCollection.Where(w => w.ItemA != "LOVEU");
    MyCollection = new ObservableCollection<MyModel>(query2);
    foreach (var item in query1)
    {
        MyCollection.Insert(0,item);
    }
    

    【讨论】:

      【解决方案2】:

      我想这应该可以解决问题:

      collection.OrderBy(x => x.ItemA == "LOVEU").ThenBy(x => x.ID);
      

      在第二个OrderBy中当然可以放任何其他的排序条件。

      【讨论】:

      • 注意,当你想链接OrderBys时,你应该第一次使用OrderBy,然后使用ThenByThenByDescending
      • 没错,我的错。谢谢
      • 谢谢!我会试试的
      猜你喜欢
      • 2018-07-21
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多