2012-04-24 72 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

不确定为什么我的回答被删除。尽管其他人已经帮助过,但我得到答案的方式并不是由那些帮助过的人产生的。我已经在我的原帖中发布了这个问题。