2012-04-24 15 views
2

これは私のコントローラにあり、ドロップダウンリストにアイテムを入力しようとしています。私はすでにアクティブなアイテムに基づいて設定していますが、現在非アクティブであっても以前に選択されたアイテムを追加したいと考えています。私はアクティブな項目を取得するためにWhere句をチェックインしたかったのですが、以前に選択されたパーティータイプのIDをリストのパーティータイプIDに取得するために 'または'を追加したいと思います。選択したIdでアイテムIDを確認します

viewModel.AvailablePartyTypes = 
      _partyTypeRepository.FindAll().OrderBy(o => o.Description).Where(a => a.IsActive).ToSelectList(
       "PartyTypeId", "Description", viewModel.PartyTypeId.ToString()); 

これは私が取得しようとしていますものです:

Where(a=>a.IsActive || selected.PartyTypeId == PartyTypeId) 

答えて

3

は、たぶん私は何かを見下ろすていますが、それはのように単純ではありません。

Where(a=>a.IsActive || selected.PartyTypeId == a.PartyTypeId) 

編集:

複雑なリファクタリングを取得した場合は、

Where(a=> UseItem(a)) 

private static bool UseItem(object a) 
    { 
     bool result = a.IsActive; 
     //etc 
     return result; 
    } 
+0

この作品には私のための道があります。私のwhere句のいくつかは次のようなものです: ここで(a => a.IsActive ?? false || a.PartyTypeId == ViewModel.PartyTypeId)falseは表示されず、アクティブな項目を取得しません。 – Masriyah

+0

複雑なラムダの場合は、メソッド呼び出しでそれらを置き換えることを検討してください。 – amaters

+0

助けてくれてありがとう、私は周りを遊んでいて、ちょうどあなたの最初の提案に似ていた解決策として別の方法を考え出しました。再度、感謝します – Masriyah

0

なぜ私の答えが削除されたのか分かりません。他の人が助けてくれましたが、私の答えが得られ、形成された方法は本当に助けられた人から生み出されたものではありません。私はそれをすでに私の元の投稿に投稿していました。