我有一个基于 XML 模式的对象,并希望使用 LINQ 从中获取我感兴趣的数据:)
结构类似于以下示例:
SimulationStep [1..n]
- EnvironmentStep [1]
- Events [0..n]
- ResultingStateChanges [0..n]
- Objects [1]
- Object[0..n]
每个“对象”(该类链中的最后一个)都有一个属性 x、y 和 z,表示该对象在 3D 空间中的位置。还有一个 ID 用于识别每个对象。
现在我想为等于给定 ID 的对象的每个 SimulationStep 收集所有 (x,y,z) 三元组。
我这样试过:
for (int i = 0; i < stepCount; i++)
{
var events = from c in log.SimulationStep[i].EnvironmentSimulatorStep.EnvSimInputEvent
from d in c.ResultingStateChanges
from e in d.Agents.Agent
where e.id == id
select new { c.occurrenceTime, o = new Vector3((float)e.x, (float)e.y, (float)e.z) }
}
但是我得到的只是SimulationStep 0的结果(x,y,z)。但我想要一个包含每个步骤中位置的列表。这样:例如....
SimStep[0] - (0,0,0)
SimStep[1] - (5,0,0)
SimStep[2] - (10, 7, 0)