我在这里有一个 Linq to XML 查询,但是在我查询的 XML 文档中,有很多重复的元素值被返回。到目前为止,这并没有造成问题,因为我的代码稍后会在使用数据构建树视图之前过滤掉重复项。
但是,我注意到如果有许多具有相同值的系统和子系统元素,我的程序会显着减慢。这是因为我的程序在过滤掉重复条目之前运行了大量代码。我认为在 Linq 阶段将它们过滤掉会更有效。唯一的问题是我不知道该怎么做。
我的 xml 示例如下所示,这是我的 Linq 查询:
XDocument doc = XDocument.Load(CSDBpath + projectName + "\\Data.xml");
var subsys = from sub in doc.Descendants("dataModule")
where sub.Descendants("system").First().Value == sys
select sub.Descendants("subsystem").First().Value;
foreach (var mysub in subsys)
{
buildSubSystemNodes(sys, mysub);
getUnits(sys, mysub);
}
因此,目前可能从 linq 查询中收集到数百个重复的“子系统”变量。我需要在我的 foreach 循环之前过滤掉这些。
这是 xml 文件的摘录。如您所见,所有这三个条目都具有相同的 Sys、Subsys 和 Subsubsys 元素值。有时有数百个相同的。我需要删除重复项。请帮忙!!
<DMs>
<dataModule>
<DMC>DMC-PO-A-32-11-00-00A-00BA-C_001.SGM</DMC>
<techName>Main Landing Gear</techName>
<infoName>List of support equipment (normally used in front matter)</infoName>
<modelic>PO</modelic>
<system>32</system>
<subsystem>11</subsystem>
<subsubsystem>00</subsubsystem>
<status>Checked In</status>
<notes>-</notes>
<currentUser>-</currentUser>
<validator>-</validator>
<dateMod>-</dateMod>
<size>-</size>
</dataModule>
<dataModule>
<DMC>DMC-PO-A-32-11-00-00A-00CA-C_001.SGM</DMC>
<techName>Main Landing Gear</techName>
<infoName>List of supplies (normally used in front matter)</infoName>
<modelic>PO</modelic>
<system>32</system>
<subsystem>11</subsystem>
<subsubsystem>00</subsubsystem>
<status>Checked In</status>
<notes>-</notes>
<currentUser>-</currentUser>
<validator>-</validator>
<dateMod>-</dateMod>
<size>-</size>
</dataModule>
<dataModule>
<DMC>DMC-PO-A-32-11-00-00A-005A-C_001.SGM</DMC>
<techName>Main Landing Gear</techName>
<infoName>Lists of abbreviations</infoName>
<modelic>PO</modelic>
<system>32</system>
<subsystem>11</subsystem>
<subsubsystem>00</subsubsystem>
<status>Checked In</status>
<notes>-</notes>
<currentUser>-</currentUser>
<validator>-</validator>
<dateMod>-</dateMod>
<size>-</size>
</dataModule>
<dataModule>
</DMs>