LINQ包括/排除逻辑



我有一个包含名称和typeID的Inclage列表,我想为带有某种typeID的给定项目创建一个排除列表。但是捕获的是,如果一个名称根本没有出现在列表中,则不会从任何类型中排除。

我该如何使用linq?

       List<NameTypeFilter> includeList = new List<NameTypeFilter>();
        includeList.Add(new NameTypeFilter
        {
            Name = "N1",
            Type = "T1"
        });

        MyItem myItem1 = new MyItem();
        myItem1.Type = "T1";
        MyItem myItem2 = new MyItem();
        myItem1.Type = "T2";
        MyItem myItem3 = new MyItem();
        myItem1.Type = "T3";
        //  excludelist for myItem1 should contain nothing
        //  excludelist for myItem2 should contain N1
        //  excludelist for myItem3 should contain N1
        includeList.Add(new NameTypeFilter
        {
            Name = "N2",
            Type = "T2"
        });
        //  excludelist for myItem1 should contain N2
        //  excludelist for myItem2 should contain N1
        //  excludelist for myItem3 should contain N1,N2

如果您共享代码的示例,它将有助于了解更多详细信息但是,根据我的假设,如果您添加LINQ条件,则可以使用Linq进行操作或跳过。

includeList.Where(y => !includeList.Any(z => z.Type == currentItemType && y.Name == z.Name))

我认为这是这样做的

最新更新