2016-05-04 3 views
0

私はちょうどこのObservableCollectionでこのような注文を保つにはどうすればいいですか?

[ 
    { 
     "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を含むMyModelsが常に表示されます場所。

ありがとうございます!あなたは、任意の他のソート条件を置くことができるに第二のOrderByで

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

:私は、これはトリックを行う必要がありますと仮定し

答えて

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); 
} 
+0

ありがとう!私は試してみる –

0

を動作するはずですコース。

+1

'OrderBy'sを連鎖させたいときは、最初に' OrderBy'を使うべきですが 'ThenBy'や' ThenByDescending'を使うべきです。 –

+0

そうです、間違いです。ありがとうございます –

+0

ありがとう!試してみます –

関連する問題