获取具有嵌套列表属性的List的所有值

Nieksa

今天早上我来了,这似乎是一个很容易解决的问题。我想将列表的所有值写入控制台。在这种情况下,列表包含列表成员。我一直在寻找解决方案已有一段时间,但找不到。

到目前为止,我已经做到了。

tl.ForEach(tradelane =>
        {
            row = "";

            foreach(PropertyInfo pi in typeof(coTradeLane).GetProperties())
            {
                Type T = pi.PropertyType;

                if (T.IsGenericType && T.GetGenericTypeDefinition() == typeof(List<>))
                {
                    foreach(PropertyInfo piList in tradelane.GetType().GetProperties())
                    {

                            // Select the nested list and loop through each member..

                    }
                    continue;
                }

                var val = pi.GetValue(tradelane);
                if (val != null) row += val.ToString() + " \t ";
                else row += " \t \t ";
            }
            Console.WriteLine(row);
        });
马修·沃森

我不确定您想要什么,但是此递归解决方案可能会帮助您。我稍微作弊是因为我在寻找IList而不是List<T>简化代码。

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace Demo
{
    // This type contains two properties.
    // One is a plain List<Double>, the other is a type that itself contains Lists.

    public sealed class Container
    {
        public List<double> Doubles { get; set; }

        public Lists Lists { get; set; }
    }

    // This type contains two Lists.

    public sealed class Lists
    {
        public List<string> Strings { get; set; }
        public List<int> Ints { get; set; }
    }

    public static class Program
    {
        private static void Main()
        {
            var lists = new Lists
            {
                Strings = new List<string> {"A", "B", "C"}, 
                Ints = new List<int> {1, 2, 3, 4, 5}
            };

            var container = new Container
            {
                Doubles = new List<double> {1.1, 2.2, 3.3, 4.4},
                Lists = lists
            };

            var items = FlattenLists(container);

            // This prints:
            //
            // 1.1
            // 2.2
            // 3.3
            // 4.4
            // A
            // B
            // C
            // 1
            // 2
            // 3
            // 4
            // 5

            foreach (var item in items)
                Console.WriteLine(item);
        }

        // This recursively looks for all IList properties in the specified object and its subproperties.
        // It returns each element of any IList that it finds.

        public static IEnumerable<object> FlattenLists(object container)
        {
            foreach (var pi in container.GetType().GetProperties().Where(p => p.GetMethod.GetParameters().Length == 0))
            {
                var prop = pi.GetValue(container);

                if (typeof(IList).IsAssignableFrom(pi.PropertyType))
                {
                    foreach (var item in (IList) prop)
                        yield return item;
                }

                foreach (var item in FlattenLists(prop))
                    yield return item;
            }
        }
    }
}

我不确定这有多少用,因为您只是得到了一个扁平化的列表,却不知道object它们所关联的属性。但是,您可以修改FlattenLists()以返回更多信息,而不仅仅是对象。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用C#中的Selenium获取具有特定类的所有元素的属性值的列表

来自分类Dev

LINQ:获取列表中具有最大属性值的记录

来自分类Dev

获取具有特定属性相同值的对象的列表

来自分类Dev

有没有办法从列表中获取具有特定属性的所有项目

来自分类Dev

如何在值列表中选择所有具有属性值的对象?

来自分类Dev

如何从多个具有相同值的字典中获取所有值到列表python中

来自分类Dev

获取所有不具有以value开头的data属性的列表项

来自分类Dev

获取对象的所有属性的列表

来自分类Dev

如何获取所有Wikidata属性的列表?

来自分类Dev

获取对象的所有属性的列表

来自分类Dev

Python:断言列表中的所有对象都具有特定的属性值

来自分类Dev

检索列表中的所有对象在python中的属性是否具有相同的值

来自分类Dev

在二维网格(多维列表)中获取具有最大值的所有图块

来自分类Dev

如何获取仅在蜂巢中具有NULL值的所有列的列表?

来自分类Dev

WordPress获取所有属性和值

来自分类Dev

从html字典属性获取所有值

来自分类Dev

获取css属性的所有可用值

来自分类Dev

从 XML 获取所有属性值

来自分类Dev

如何获取JS对象中特定嵌套属性的所有值

来自分类Dev

使用PHP在嵌套的xml中获取具有特定属性的多个值

来自分类Dev

如何从列表中获取所有值?

来自分类Dev

使用 ramda 在嵌套数组中查找具有给定 id 的对象,获取除子数组之外的所有属性

来自分类Dev

获取具有相同名称的所有属性

来自分类Dev

获取具有所有属性的Laravel模型

来自分类Dev

从具有相同名称的节点获取所有属性

来自分类Dev

XSLT:获取具有指定属性的父母的所有子女

来自分类Dev

为所有具有值和标签属性的嵌套结构定义自定义类型

来自分类Dev

确定嵌套列表是否在R中具有所有NA值时,sapply出现问题

来自分类Dev

如何从具有嵌套对象数组的多个文档中一次获取与mongodoDb查询匹配的所有值

Related 相关文章

  1. 1

    使用C#中的Selenium获取具有特定类的所有元素的属性值的列表

  2. 2

    LINQ:获取列表中具有最大属性值的记录

  3. 3

    获取具有特定属性相同值的对象的列表

  4. 4

    有没有办法从列表中获取具有特定属性的所有项目

  5. 5

    如何在值列表中选择所有具有属性值的对象?

  6. 6

    如何从多个具有相同值的字典中获取所有值到列表python中

  7. 7

    获取所有不具有以value开头的data属性的列表项

  8. 8

    获取对象的所有属性的列表

  9. 9

    如何获取所有Wikidata属性的列表?

  10. 10

    获取对象的所有属性的列表

  11. 11

    Python:断言列表中的所有对象都具有特定的属性值

  12. 12

    检索列表中的所有对象在python中的属性是否具有相同的值

  13. 13

    在二维网格(多维列表)中获取具有最大值的所有图块

  14. 14

    如何获取仅在蜂巢中具有NULL值的所有列的列表?

  15. 15

    WordPress获取所有属性和值

  16. 16

    从html字典属性获取所有值

  17. 17

    获取css属性的所有可用值

  18. 18

    从 XML 获取所有属性值

  19. 19

    如何获取JS对象中特定嵌套属性的所有值

  20. 20

    使用PHP在嵌套的xml中获取具有特定属性的多个值

  21. 21

    如何从列表中获取所有值?

  22. 22

    使用 ramda 在嵌套数组中查找具有给定 id 的对象,获取除子数组之外的所有属性

  23. 23

    获取具有相同名称的所有属性

  24. 24

    获取具有所有属性的Laravel模型

  25. 25

    从具有相同名称的节点获取所有属性

  26. 26

    XSLT:获取具有指定属性的父母的所有子女

  27. 27

    为所有具有值和标签属性的嵌套结构定义自定义类型

  28. 28

    确定嵌套列表是否在R中具有所有NA值时,sapply出现问题

  29. 29

    如何从具有嵌套对象数组的多个文档中一次获取与mongodoDb查询匹配的所有值

热门标签

归档