首页 > 解决方案 > LINQ:获取包含具有特定名称和值的属性的数组中的对象

问题描述

可以说,尝试通过使用具有特定值的属性之一作为“指针”来选择数组中的对象。我的目标是用 linq 做到这一点

例子:

    {
        "A": "ValA",
        "B": "ValB",
        "C": [
            {
                "D": "ValD1",
                "E": "ValE1",
                "F": "ValF1"
            },
            {
                "D": "ValD2",
                "E": "ValE2",
                "F": "ValF2"
            },
            {
                "D": "ValD2",
                "E": "ValE3",
                "F": "ValF3"
            }
         ]
    }

所以我想做的是获取包含属性“D”和值“ValD2”的对象n数组“C”。由于有两个对象,我想让 LINQ 查询返回一个包含两个对象的列表。如果有一个对象包含属性“D”和值“ValD2”。可以这么说,我只会取回一个包含这些参数的对象。

那是:

       [
            {
                "D": "ValD2",
                "E": "ValE2",
                "F": "ValF2"
            },
            {
                "D": "ValD2",
                "E": "ValE3",
                "F": "ValF3"
            }
       ]

到目前为止,我已经设法通过这样做来获取数组 C 中的所有对象:

json.DescendantsAndSelf().OfType<JObject>().Where(x => x.ContainsKey("C")).ToList()

标签: c#linq.net-core

解决方案


所以我想我是在 Abdus Salam Azad 和 Prasad Telkikar 的帮助下找到的:

json.DescendantsAndSelf().OfType<JObject>().Where(x => x.ContainsKey("D")).Where(x => x.Property("D").Value.ToString() == "ValD2").ToList()

谢谢大家!


推荐阅读