2017-08-08 2 views
1

このような記述がありますが、どうすればこのロジックを最適化できますか?私は約1時間だと思うが、私は見つけられない。ifステートメントのコードをクリーンアップ

は、どのように私はこのロジックをsimplfyことができますか?

if (model.WaitingChecked) 
{ 
    if (model.selectedStatus != 0) 
    { 
     model.DataList = data.Where(x => x.status != 6 && x.status == model.selectedStatus); 
     return View(model); 
    } 

    model.DataList = data.Where(x => x.status != 6); 
    return View(model); 
} 

if (model.SelectedStatus != 0) 
{ 
    model.DataList = data.Cast<DataDetailedList>().Where(x => x.status == model.selectedStatus); 
    return View(model); 
} 
+0

これは何ですか? – Pirate

+0

何らかの形で条件を組み合わせることができない限り、ここでは本当に単純化する方法はありません。 Scalaのエキスパートがもっと言いたいことがあります。 –

+0

私は3回戻るビュー(モデル)を使用しなければならないことを意味します。最適化されていないようです。 @Pirateこれはビューのチェックボックスです。 –

答えて

2

さまざまな条件でパターンマッチングを使用できます。パターンマッチングは網羅的である必要があることを忘れないでください。意味するすべての値の組み合わせを定義する必要があります。

(model.WaitingChecked, model.selectedStatus) match{ 
    case (true, 0) => 
    model.DataList = data.Where(x => x.status != 6) 
    View(model) 
    case (true, _) => 
    model.DataList = data.Where(x => x.status != 6 && x.status == model.selectedStatus) 
    View(model) 
    case (_, 0) => 
    //missing logic for model.selectedStatus is zero return 
    case (_, _) => 
    model.DataList = data.Cast<DataDetailedList>().Where(x => x.status == model.selectedStatus) 
    View(model) 
} 
+0

'model.selectedStatus'がADTであることにも意味があります - コンパイラは完全性をチェックします。 – dveim

+0

Thanks for Java。しかし、C#で作業しています。 :) –

関連する問題