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

时间:2016-08-04 12:16:57

标签: c# asp.net visual-studio linq listbox

我有一个列出了我所有工厂的列表框。我在listbox(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();
}

然而,我希望你知道我的意思,抱歉我的英语不好

1 个答案:

答案 0 :(得分:0)

尝试代替:

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

此:

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

执行Except时,它会返回“第二个列表中的项目以外的输入列表”,而不会设置第一个列表。

不确定,但在我看来,selectedFac的类型为ClientCode,而不是AllFactory中的项目。如果是这种情况,您应该使用:

var result = AllFactory.Where(item => 
        !selectedFac.Any(filteredValue => filteredValue == item.ClientCode)).ToList();
相关问题