2016-06-17 17 views
0

リストに特定の文字列値が含まれているかどうかに基づいてリストを並べ替えることに奇妙な問題があります。ビュー内には、最初に「スヌーズ」されず、タイトルに「注文」という単語が含まれているかどうかによって並べ替えられたオブジェクトを表示するビューモデルのリストがあります。次のように私のコードは次のようになります。その後、Linq Orderby 'string contains'が期待通りに動作しない

var sortedFaults = accountFaultContainer.Faults.Values.OrderBy(f => f.IsSnoozed).ThenByDescending(f => f.Title.ToLower().Contains("order")); 

私はこのリストをループし、foreachループを使用して、私のテーブルに「障害」を追加...

foreach (Fault fault in sortedFaults) 

これは、いくつかのケースで動作しますが、ありません他にもあります。私は期待どおりの振る舞いをしないものを選別しようとしてきましたが、明確な違いはありません。たとえば、一度のケースでは、「失敗した同期」というタイトルが、「失敗した注文の同期」の前後に発注されました。しかし、これは常に不正行為ではない。いくつかのテーブルでは、注文が機能しています。

誰も以前に同様の問題に遭遇しましたか?それとも、私は行方不明の明白な何かがありますか?私はここで私の頭を傷つけている!

答えて

0

最初にIsSnoozedで注文するので、優先されます。

.OrderBy(f => f.IsSnoozed) 
.ThenByDescending(f => f.Title.ToLower().Contains("order")); 

周りに他の方法を試してみてください。

.OrderBy(f => f.Title.ToLower().Contains("order")) 
.ThenByDescending(f => f.IsSnoozed); 
+0

おかげで@buffjapeが、私はORDERBYが優先するスヌーズ必要があります。私は、この問題は「スヌーズされた」アイテムがないリストであっても起こっています。このコードを使用すると、私のリストには、スヌーズされていないアイテムがすべて表示されます。スヌーズされていないアイテムはすべて表示されます。 – Misemefein

関連する問題