我刚收到一些这样的数据
[
{
"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地点。
谢谢!
答案 0 :(得分:0)
可能它不是最好的解决方案,但这应该有效
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);
}
答案 1 :(得分:0)
我想这应该可以解决问题:
collection.OrderBy(x => x.ItemA == "LOVEU").ThenBy(x => x.ID);
在第二个OrderBy中,您当然可以放置任何其他排序条件。