【发布时间】:2015-09-10 20:48:23
【问题描述】:
我已使用以下 linq 查询来访问成员名称。以下成功返回集合中的所有成员 Name 值。
var we = CsQ.Groups.SelectMany(g => g.Members).Where(a => a.Name == "Name").Select(b => b.Value).ToList();
我现在想根据“成员”中名为 AbsoluteUri 的另一个属性来过滤此属性,该属性嵌套在属性 AgentsByUri 中。这不起作用,但给出了结构的概念:
var uri = CsQ.Groups.SelectMany(g => g.Members).Where(a => a.Name == "AgentsByUri").Select(b => b.Value).//??? I NEED TO NOW ACCESS "AbsoluteUri"
如何将这些组合到一个查询中,以便仅返回具有包含“SomeValue”的“AbsoluteUri”的“Names”。 AbsoluteUri 似乎嵌套在一个集合中,该集合嵌套在 AgentsByUri 中,这增加了复杂性。
您可以在此处查看 AgentsByUri 对象的结构 - Using C# Linq to query nested objects
请原谅我的术语,我对 C# 相当陌生!希望这是有道理的:)
非常感谢任何帮助或指导:)
EDIT3 到达某个地方!转换为动态部分工作 - member.AgentsByUri 现在可以了,只是无法弄清楚如何使其适用于查询的其余部分。尝试在不同的位置添加,但没有成功。
EDIT2 感谢大家的意见。我没有取得任何进一步的成功。我认为最大的问题是我正在处理一个在运行时动态生成的 PowerShell 对象。结果我无法访问类/对象,因为编译器还没有关于它们。为了解决这个问题,我使用“动态”类型,它允许编译器相信我提供的内容在运行时是有效的。我可以在 linq 查询中转换为动态吗?还是我需要以不同的方式解决这个问题?
以下是我从示例中得到的:
【问题讨论】:
-
你能澄清一下类的结构吗?链接答案上的图片小而模糊
-
Linq 不进行递归。创建一个递归函数并将 Linq 放入递归函数中。
-
只需在您的问题中包含课程。作为代码,而不是图像。没有人喜欢根据不完整的信息给出答案。
-
感谢大家的cmets,非常感谢。你们中的一些人希望对我正在处理的数据有所了解。我已经用一张应该显示给你的图片更新了帖子。
-
对不起,这真的行不通。你为什么不在命名类型的结构中捕获动态类型,如果只是为了在这里展示呢?