2016-09-09 9 views
1

テーブル内の特定の要素をフィルタリングしたいが、テーブル内に特定の状態があるときに、同じものをフィルタリングしたい。Orderby特定の状態のときのASC/DESC

When the state is "Open" I want to filter on "tijdSluit" ascending. When te state is "Gesloten" I want to filter on "tijdSluit" descending.

私は今使用コード:

return View(db.GetAllRequests().OrderBy(Request => Request.request.Status).ThenBy(Request => Request.request.tijdSluit)); 

問題は、あなたが昇順と同じテーブルに降順でフィルタすることができないということです。これをどうすれば解決できますか?

return View(db.GetAllRequests().Where(Request => Request.request.Status == 1).OrderBy(Request => Request.request.Status).Where(Request => Request.request.Status != 1).OrderByDescending(Request => Request.request.tijdSluit)); 

しかし、私はそのコードを実行したとき、私は、空のテーブルを取得:

私はこのを試してみました。

どうすればこの問題を解決できますか?

+0

返されるデータが空の場合は、それが空である理由を確認してください。注文はnoに影響しません。あなたは –

+0

@BonMacalindongを得るでしょう。それは 'Where'があるからです。 – Arendax

+0

2つの方法でデータを注文することはできません。降順または昇順のいずれかです。あなたがしたいことは、あなたの '州'にifを書いてそれに応じてソートを行うことです。 – Schoof

答えて

1

もちろん、テーブルのascとdescを同時に注文することはできません。おそらくあなたの場合、2つの順序付けられた配列が必要でしょうか?このような何か?

var allRequests = db.GetAllRequests(); 
var openRequests = allRequests.Where(Request => Request.request.Status == 1).OrderBy(Request => Request.request.Status).ToList(); 
var otherRequests = allRequests.Where(Request => Request.request.Status != 1).OrderByDescending(Request => Request.request.tijdSluit)).ToList(); 
openRequests.AddRange(otherRequests); 
return View(openRequests); 
+0

注文で状態チェックをカプセル化する拡張メソッドを実行するかのいずれかです。エラー: "'void'から 'object'に変換できません。 – Arendax

+1

申し訳ありません、最後の行に編集を追加しました) –

+0

ありがとうございます。 – Arendax

関連する問題