如何使用 linq 查询带有嵌套列表的对象?

达尼·帕索斯

我将来自第三方提供程序的 JSON 反序列化为一个对象,并希望查询该对象以查找特定属性中的值。

我的问题是该对象有一个属性 (Parts),其值是一个具有相同类型的列表。

public class RulePartModel
{
    public string isExistsUnder { get; set; }
    public int State { get; set; }       
    public string Value { get; set; }
    public List<RulePartModel> Parts { get; set; }
}

当 Parts 属性可以有 6 或 7 级时,如何查询此对象以查找特定值?

这是我作为答案收到的 JSON 示例:

{
  "isExistsUnder": null,
  "State": "",
  "Value": "CustomElements",
  "Parts": [
    {
      "isExistsUnder": null,
      "State": 0,      
      "Value": "Rule 73",
      "Parts": [
        {
          "isExistsUnder": null,
          "State": "",
          "Value": "For variable initializations",
          "Parts": [
            {
              "isExistsUnder": null, 
              "State": "",             
              "Value": "cupis",
              "Parts": [
                {
                  "isExistsUnder": null,
                  "State":"",
                  "Value": "randomText1",
                  "Parts": []
                },
                {
                  "isExistsUnder": null,
                  "State":"",
                  "Value": "randomText2",
                  "Parts": []
                },
                {
                  "isExistsUnder": null,
                  "State":"",
                  "Value": "randomText3",
                  "Parts": []
                }
              ]
            }
        }
    }
}
阿里·雷萨

试试这个:

        static void Main(string[] args)
    {
        var testobj = new RulePartModel();
        var results = FindParts(testobj, q => q.Value == "123");
        // results =>>> all objects with your condition
    }
    static IEnumerable<RulePartModel> FindParts(RulePartModel obj, Func<RulePartModel, bool> predicate)
    {
        if (predicate.Invoke(obj))
            yield return obj;
        foreach (var item in obj.Parts)
            foreach (var res in FindParts(item, predicate))
                yield return res;
    }

对非递归函数使用@Parrish建议:

        static IEnumerable<RulePartModel> FindParts(RulePartModel obj)
    {
        var stack = new Stack<RulePartModel>();
        stack.Push(obj);
        while (stack.Count > 0)
        {
            var current = stack.Pop();
            yield return current;
            foreach (var item in current.Parts)
                stack.Push(item);
        }
    }

用法示例:

var results = FindParts(testobj).Where(q => q.Value == "123");

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用linq填充嵌套列表类

来自分类Dev

使用LINQ查询列表

来自分类Dev

如何使用Entity Framework 7 linq查询加载嵌套在类中的所有级别的对象?

来自分类Dev

如何使用休眠模式来查询带有嵌套对象的对象,该嵌套对象具有嵌套的对象集合

来自分类Dev

如何使用ViewModels从LINQ查询返回列表

来自分类Dev

使用LINQ对列表及其所有嵌套对象进行排序

来自分类Dev

如何编写嵌套的linq查询

来自分类Dev

如何嵌套此LINQ查询?

来自分类Dev

如何继续使用 LINQ 查询

来自分类Dev

使用 LINQ 嵌套列表索引

来自分类Dev

如何使用带有嵌套列表的循环?

来自分类Dev

带有Join的Linq查询如何写为Lambda?

来自分类Dev

使用LINQ分页对象列表

来自分类Dev

无法在带有实体框架的 LINQ 中使用 IN 查询

来自分类Dev

如何使用列表对象中3个属性的搜索条件在List <>上加速此linq查询

来自分类Dev

如何使用LINQ将具有两个字段的对象列表转换为带有其中一个的数组

来自分类Dev

如何在没有 foreach 的情况下使用 linq 过滤嵌套对象?

来自分类Dev

如何使用LINQ从SQL查询编写LINQ查询?

来自分类Dev

有什么方法可以使用 linq 查询过滤嵌套列表,以便我最终得到充分过滤列表的过滤列表?

来自分类Dev

如何使用存储字典的Linq查询数组列表

来自分类Dev

如何使用linq.js查询Json对象?

来自分类Dev

如何使用LINQ查询中的singe对象填充GridView?

来自分类Dev

如何使用Linq在列表内打印列表

来自分类Dev

如何使用LINQ在列表中添加列表

来自分类Dev

如何使用linq和EntityFramework获得对象的补码列表

来自分类Dev

如何在Linq查询中使用.ToList()?

来自分类Dev

如何使用LINQ联接子查询

来自分类Dev

如何使用Linq查询检索数据

来自分类Dev

如何使用LINQ编写此查询?

Related 相关文章

  1. 1

    如何使用linq填充嵌套列表类

  2. 2

    使用LINQ查询列表

  3. 3

    如何使用Entity Framework 7 linq查询加载嵌套在类中的所有级别的对象?

  4. 4

    如何使用休眠模式来查询带有嵌套对象的对象,该嵌套对象具有嵌套的对象集合

  5. 5

    如何使用ViewModels从LINQ查询返回列表

  6. 6

    使用LINQ对列表及其所有嵌套对象进行排序

  7. 7

    如何编写嵌套的linq查询

  8. 8

    如何嵌套此LINQ查询?

  9. 9

    如何继续使用 LINQ 查询

  10. 10

    使用 LINQ 嵌套列表索引

  11. 11

    如何使用带有嵌套列表的循环?

  12. 12

    带有Join的Linq查询如何写为Lambda?

  13. 13

    使用LINQ分页对象列表

  14. 14

    无法在带有实体框架的 LINQ 中使用 IN 查询

  15. 15

    如何使用列表对象中3个属性的搜索条件在List <>上加速此linq查询

  16. 16

    如何使用LINQ将具有两个字段的对象列表转换为带有其中一个的数组

  17. 17

    如何在没有 foreach 的情况下使用 linq 过滤嵌套对象?

  18. 18

    如何使用LINQ从SQL查询编写LINQ查询?

  19. 19

    有什么方法可以使用 linq 查询过滤嵌套列表,以便我最终得到充分过滤列表的过滤列表?

  20. 20

    如何使用存储字典的Linq查询数组列表

  21. 21

    如何使用linq.js查询Json对象?

  22. 22

    如何使用LINQ查询中的singe对象填充GridView?

  23. 23

    如何使用Linq在列表内打印列表

  24. 24

    如何使用LINQ在列表中添加列表

  25. 25

    如何使用linq和EntityFramework获得对象的补码列表

  26. 26

    如何在Linq查询中使用.ToList()?

  27. 27

    如何使用LINQ联接子查询

  28. 28

    如何使用Linq查询检索数据

  29. 29

    如何使用LINQ编写此查询?

热门标签

归档