【问题标题】:Nested IEnumerable/Arrays, how to access a deeply nested property嵌套 IEnumerable/Arrays,如何访问深度嵌套的属性
【发布时间】:2016-07-27 02:55:29
【问题描述】:

所以我有一个包含队列(列表)的 IEnumerable 对象,每个项目包含 3 个属性。其中一个属性(“States”)包含另一个数组......并且该数组包含属性“Messages”。相当混乱,所以我在调试时拍了当地的照片。 不得不编辑掉敏感数据。

我只有这个 IEnumerable 对象可以使用。我如何到达属性“消息”?

我已经尝试了一些 Lambda 表达式...喜欢

var _message = _criticalData.Select(item1 => item1.States.Select(item2 =>item2.Messages).ToArray()).ToArray()

然后我可以创建一个新的字符串数组/列表并将每个 _message 插入其中。

至少我认为它有效(无法在家测试)。但它也会真的很慢。有没有其他方法可以做到这一点?

【问题讨论】:

  • 如果你展示你的课程而不是图片会更有帮助。
  • 我知道,很遗憾我无法远程访问代码。而且我不想用 4 张班级图片向这个问题发送垃圾邮件
  • item1 和 item2(即 State 本身)如何都具有 States 属性?
  • 对不起,弄错了,把它删掉了blush
  • 你的意思是像_criticalData.SelectMany(x => x.States.SelectMany(y => y.Messages))?

标签: c# arrays linq


【解决方案1】:

你必须展平多个列表,所以使用SelectMany like:

string[] output = _criticalData.SelectMany(outer => 
                            outer.States.SelectMany(inner => inner.Messages))
                            .ToArray();

【讨论】:

  • 天哪,我什至不知道有 selectmany 方法....谢谢。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-13
  • 2019-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多