Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq包含/排除逻辑_C#_Linq - Fatal编程技术网

C# Linq包含/排除逻辑

C# Linq包含/排除逻辑,c#,linq,C#,Linq,我有一个包含Name和TypeId的include列表,我想为具有某个TypeId的给定项创建一个排除列表。但问题是,如果一个名称根本没有出现在列表中,那么它就不会从任何类型中排除 我该如何处理linq List<NameTypeFilter> includeList = new List<NameTypeFilter>(); includeList.Add(new NameTypeFilter { N

我有一个包含Name和TypeId的include列表,我想为具有某个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
List includeList=新列表();
includeList.Add(新名称类型筛选器
{
Name=“N1”,
Type=“T1”
});
MyItem myItem1=新的MyItem();
myItem1.Type=“T1”;
MyItem myItem2=新的MyItem();
myItem1.Type=“T2”;
MyItem myItem3=新的MyItem();
myItem1.Type=“T3”;
//myItem1的excludelist不应包含任何内容
//myItem2的excludelist应包含N1
//myItem3的excludelist应包含N1
includeList.Add(新名称类型筛选器
{
Name=“N2”,
Type=“T2”
});
//myItem1的excludelist应包含N2
//myItem2的excludelist应包含N1
//myItem3的excludelist应包含N1、N2

如果您共享代码示例,将有助于更详细地理解您的查询 然而,根据我的假设,如果您将Linq条件与Linq的TakeWhile或SkipWhile一起添加,它可能会帮助您获得期望的结果

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

我想这样就可以了

请给出一些简单的例子来描述这个问题。你在你的列表上迭代并检查这个名字。如果不存在,则返回一个空列表。如果存在,则按TypeId筛选包含列表。添加了示例代码