Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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# CollectionProperties上的filter为我提供了全部4条记录,而不是2条_C# - Fatal编程技术网

C# CollectionProperties上的filter为我提供了全部4条记录,而不是2条

C# CollectionProperties上的filter为我提供了全部4条记录,而不是2条,c#,C#,我有一个列表lstcollectionstances,其中有4个收集实例 var lstCollectionInstances = new List<CollectionInstance> { new CollectionInstance { Name = "A", CollectionProperties = new List<CollectionP

我有一个列表
lstcollectionstances
,其中有4个收集实例

var lstCollectionInstances = new List<CollectionInstance>
        {
            new CollectionInstance
            {
                Name = "A",
                CollectionProperties = new List<CollectionProperty>
                {
                    new CollectionProperty {Name = "P1", Value = 10, DataType = "D"}
                }
            },
            new CollectionInstance
            {
                Name = "A",
                CollectionProperties = new List<CollectionProperty>
                {
                    new CollectionProperty {Name = "P2", Value = "H1", DataType = "S"}
                }
            },
            new CollectionInstance
            {
                Name = "B",
                CollectionProperties = new List<CollectionProperty>
                {
                    new CollectionProperty {Name = "P1", Value = 20, DataType = "D"}
                }
            },
            new CollectionInstance
            {
                Name = "B",
                CollectionProperties = new List<CollectionProperty>
                {
                    new CollectionProperty {Name = "P2", Value = "H2", DataType = "S"}
                }
            },
        };

这是因为您正在执行
lstcollectionstances
的每个项目中的
Select
,以及
CollectionProperties
中的何处。它将返回4个项目,其中2个项目的集合属性为空。您应该首先执行
Where
,如下所示:

  var X = lstCollectionInstances.Where(a => a.CollectionProperties.Any(cp => cp.DataType == "D")).Select(x => new CollectionInstance
        {
            Name = x.Name,
            CollectionProperties = x.CollectionProperties
        }).ToList();

这是因为您正在执行
lstcollectionstances
的每个项目中的
Select
,以及
CollectionProperties
中的何处。它将返回4个项目,其中2个项目的集合属性为空。您应该首先执行
Where
,如下所示:

  var X = lstCollectionInstances.Where(a => a.CollectionProperties.Any(cp => cp.DataType == "D")).Select(x => new CollectionInstance
        {
            Name = x.Name,
            CollectionProperties = x.CollectionProperties
        }).ToList();

此选项选择具有类型为D的属性的所有实例

var result= lstCollectionInstances
    .Where(x => x.CollectionProperties.Any(y => y.DataType == "D"))
    .ToList();

此选项选择具有类型为D的属性的所有实例

var result= lstCollectionInstances
    .Where(x => x.CollectionProperties.Any(y => y.DataType == "D"))
    .ToList();

CollectionProperty类中的值属性类型是什么?在第一项和第三项中设置int类型(10和20),在第二项和第四项字符串类型(“H1”和“H2”)中设置对象类型CollectionProperty类的值属性类型是什么?在第一项和第三项中设置int类型(10和20),在第二项和第四项字符串类型(“H1”和“H2”)中设置对象类型