2013-10-30 100 views
0

我有一个胜利形式的应用程序,我们正在筛选基于众多标准。一个是多选下拉菜单。这个值是一个整数,我得到的命令工作。Linq基于整数列表

我试过下面的,但是不能用一个整数包含。只是在这里展示,所以我可以告诉你我想做什么。

private List<int> GetSelectedIntVals() 
    { 
     List<int> intVals = new List<int>(); 
     foreach (var item in ddlSearchQueueStage.CheckBoxItems) 
     { 
      if (item.Checked == true) 
      { 
       intVals.Add(st.GetStageNumberFromText(item.Text)); 
      } 
     } 
     return intVals; 
    } 


    public void FilterBatch(SearchCriteria searchCriteria) 
    { 
     var FilteredBatch = (from t in BatchList select t).ToList(); 

     // This is where having issue 
     FilteredBatch = FilteredBatch.Where(p => p.Stage.Contains(searchCriteriaQueue.stageVal).ToList(); 
     . 
     . 
     . 
     . 
     RebuildScreen(); 
    } 

在此先感谢。我看过并尝试了其他一些选项,但尚未能够正常工作。

+0

什么是'BatchList'? –

+0

所有这些“ToList()”调用都不会损害您的性能。 – Jon

+0

你可以给我们一个简单的版本,你试图实现... –

回答

1

假设searchCriteriaQueue.stageVal是整数的集合(因为你说这是一个多选下拉列表),您只要有Contains呼叫向后:

FilteredBatch = FilteredBatch.Where(p => searchCriteriaQueue.stageVal.Contains(p.Stage)).ToList(); 
+0

我想说,确保在你的lambda中捕获的系统类型尽可能的是一个很好的做法。你可能会遇到像Entity Framework这样的Linq提供者的问题。 – Aron

+0

这个技巧。似乎令人困惑的事实是,我期望List值位于contains子句中。 – DanO

+0

问一个_value_“包含”_list_是否合理?我会称之为“IsContainedIn”。 –