【问题标题】:Get a filtered list from two lists从两个列表中获取过滤列表
【发布时间】:2016-08-04 12:16:57
【问题描述】:

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

但是,我希望你知道我的意思,对不起我的英语不好

【问题讨论】:

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


    【解决方案1】:

    尝试代替:

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

    【讨论】:

    • @didntCthatcoming - 如果我的其他解释也帮助您理解问题并且不仅解决了问题,请考虑支持我的回答
    • @didntCthatcoming - 很高兴来到这里 :)
    猜你喜欢
    • 1970-01-01
    • 2014-06-03
    • 2022-10-03
    • 2016-11-24
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    相关资源
    最近更新 更多