2011-06-16 49 views
1

我是新来的EF和LINQ,希望能在这里得到一些答案。linq哪里根据选定的项目?

我正在尝试从列表中搜索条件是根据组合框中的selecteditem进行搜索的。 组合框包含15个项目(所有位数据类型),但为了示例的缘故,让我把它缩小到2。项目是(公益,民事)

现在我有一个名为listOfAllNeutrals(对象名称是中性与诸如公益(比特)和民间(位)等属性,我想过滤它使用where条件根据所选择的项目。

所以,如果所选的项目=无偿,LINQ的是这样的

var result = from n in listOfAllNeutrals 
      where n.probono==true 
      select n; 

,但我的概率是我怎么告诉了n.property应根据selectedItem属性是什么? 像这个:

var result = from n in listOfAllNeutrals 
      where getpropertyName==true 
      select n; 

有没有更简单的方法,我不想在可能的情况下使用If条件。

回答

0

您需要使用if或getpropertyName(Neutral objNeutral)函数内部的开关将所选项目映射到要评估和评估的属性。您需要以某种方式映射object =>属性。

0

尝试

var result = from n in listOfAllNeutrals 
      where (selectedItem == proBono && n.probono == true) 
      || (selectedItem == civil && n.civil == true) 
      select n; 
+0

这是好的,但我不想这样做,因为这就像做的,如果将selectedItem是probon,其中n.probo。我想出了如下的解决方案,我使用关键字accrdg直接从数据库获取列表(QualificationSubType)NeutralFileMaintList = FileMaintenanceBusiness.Instance.GetManyNeutralFileMaintInfobyKeyword(true,QualificationSubType); – user742102 2011-06-17 04:41:24

+0

好吧,我刚刚重读了这个问题,我发现组合框中有15个项目,所以我的解决方案绝对不会是一个优雅的。但是,让我问你,桌子上有15列,每个项目有一列?你确定这是最好的解决方案,你有没有考虑过在单个专栏中这样做?它会使这个查询变得更简单,并且您仍然可以为您的类创建属性,以便其余代码可以编译和工作。看看http://msdn.microsoft.com/en-us/library/cc138362.aspx(滚动到名为枚举类型的位标记部分)一个简单的例子 – Vedran 2011-06-17 06:59:30

+0

感谢您的建议,但我认为这是更好将这些列作为列,因为它将在整个系统中经常使用,而且这是每种情况(成千上万的法律案例),而不仅仅是链接中的例子。 :) – user742102 2011-06-18 05:16:19