从两个列表中获取筛选列表

本文关键字:列表 获取 筛选 两个 | 更新日期: 2023-09-27 18:00:07

我有一个列表框,我的所有工厂都加载到其中。我在列表框(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();
}

然而,我希望你知道我的意思,对不起我糟糕的英语

从两个列表中获取筛选列表

尝试而不是:

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();