2012-04-24 71 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 2012-04-24 14:35:10

+0

當有複雜的lambda考慮通過方法調用來替換它們時。 – amaters 2012-04-24 14:43:49

+0

感謝您的幫助,我可以玩弄並找出另一種解決方法,只是碰巧類似於您的第一個建議。再次感謝 – Masriyah 2012-04-24 17:25:04

0

不確定爲什麼我的回答被刪除。儘管其他人已經幫助過,但我得到答案的方式並不是由那些幫助過的人產生的。我已經在我的原帖中發佈了這個問題。