2016-08-04 32 views
0

我有一个列表框,我的所有工厂都被加载到列表框中。我也在列表框中选择了一个工厂(1)。从两个列表中获取已过滤列表

列表框中所有工厂的绑定代码。

protected void fillWerke() 
{ 
    //BindingListPersistable<Liebherr.Hau.Erp.Client> bl = new BindingListPersistable<Liebherr.Hau.Erp.Client>(); 
    AllFactory = new BindingListPersistable<Liebherr.Hau.Erp.Client>(); 
    AllFactory = Manager.LoadClients(); 
    BetroffeneWerkeAll.DataSource = from allF in AllFactory select allF.ClientCode; 
    BetroffeneWerkeAll.DataBind(); 
} 

我想的是什么,

protected void fillWerke() 
{ 
    //BindingListPersistable<Liebherr.Hau.Erp.Client> bl = new BindingListPersistable<Liebherr.Hau.Erp.Client>(); 
    AllFactory = new BindingListPersistable<Liebherr.Hau.Erp.Client>(); 
    AllFactory = Manager.LoadClients(); 
    var selectedFac; 
    var filteredFac; 
    if(SelectedWerke.Items.Count > 0) 
    { 
     selectedFac = SelectedWerke.Items; 
     filteredFac = AllFactory.Except(selectedFac); 
    } 
    BetroffeneWerkeAll.DataSource = from allF in AllFactory select allF.ClientCode; 
    BetroffeneWerkeAll.DataBind(); 
} 
然而

,我希望你明白我的意思,对不起,请尝试我的英语不好

回答

0

代替:

BetroffeneWerkeAll.DataSource = from allF in AllFactory select allF.ClientCode; 

这:

BetroffeneWerkeAll.DataSource = from allF in filteredFac select allF.ClientCode; 

当您执行Except时,它将返回“除第二个列表中的项目之外的输入列表”并且不设置第一个列表。


不知道,但在我看来,那是selectedFacClientCode的类型,而不是在AllFactory的项目。如果是这样的话,你应该使用:

var result = AllFactory.Where(item => 
     !selectedFac.Any(filteredValue => filteredValue == item.ClientCode)).ToList(); 
+0

谢谢我 – didntCthatcoming

+0

@didntCthatcoming :)工作 - 如果我的补充说明,也有助于您了解这个问题,不仅要解决它,请考虑upvoting我的回答 –

+0

@didntCthatcoming - 很高兴在这里:) –