【发布时间】:2010-08-31 09:37:32
【问题描述】:
我将事务存储在表中。这些事务具有与层次结构树中的父节点相关的 ID。我的树的一个例子如下图所示。我需要允许最终用户检索事务并对它们进行分组,然后根据分组将它们写入文件。在下图中,设备(IM001-1 等)创建事务。在实时版本中,树会更大,并且可能有更多的城镇和较小区域等的级别。现在来解决问题。假设用户想要来自“UK”设备的所有交易,并且他们希望它们按国家节点分组(即“UK_North”和“UK_South”)。结果应该是一个分组列表,在此示例中将包含两个项目。第一项将包含来自设备“IM001-1”和“IM001-2”的所有事务,第二项将包含设备“IM002-1”和“IM002-2”的事务。到目前为止,我所做的是获取每个父节点的设备列表。所以我有一个分组列表,其中每个项目都包含其所有子设备的 ID。我想做的是使用 Linq 用他们的 ID 查看我的所有交易,并创建一个分组列表,分组检查哪个父节点拥有它。这一切听起来相当复杂,所以如果不清楚,我可以在需要时提供更多详细信息。我是否以正确的方式解决这个问题?由于可能有很多事务,我不想因为性能下降而不得不为每个事务进行大量树导航。
交易保存在交易列表中:
List<Transaction> transactions
每个事务都有一个属性可以公开其“DeviceId”
然后我有一个分组列表,当我将鼠标悬停在“var”上时,它的定义如下:
IEnumerable<IGrouping<String,Device>>
此列表称为“groupedDevices”。列表中的每个项目代表一个父节点(例如 UK_North),其中包含该节点下所有可用设备的列表。每个设备都有一个“DeviceId”属性。
Linq 语句需要做的是查看事务列表,并使用“groupedDevices”列表查看它属于哪个父级,然后按该列表进行分组。
【问题讨论】: