我需要一些帮助来返回属性的不同值。我试图以我的方式谷歌,但不是那么成功。
我的xml采用以下格式:
<?xml version="1.0" encoding="utf-8"?>
<threads>
<thread tool="atool" process="aprocess" ewmabias="0.3" />
<thread tool="btool" process="cprocess" ewmabias="0.4" />
<thread tool="atool" process="bprocess" ewmabias="0.9" />
<thread tool="ctool" process="aprocess" ewmabias="0.2" />
</threads>
我想返回不同的工具和流程属性。我更喜欢linq解决方案。
IEnumerable<XElement> singlethread = apcxmlstate.Elements("thread");
.. mytool =包含distinc工具的数组/列表,即{atool,btool,ctool}
感谢任何帮助。
答案 0 :(得分:4)
我想返回不同的工具和流程属性。
听起来你想要这个:
var results =
from e in apcxmlstate.Elements("thread")
group e by Tuple.Create(e.Attribute("process").Value,
e.Attribute("tool").Value) into g
select g.First().Attribute("tool").Value;
或者用流利的语法:
var results = apcxmlstate
.Elements("thread")
.GroupBy(e => Tuple.Create(e.Attribute("process").Value,
e.Attribute("tool").Value))
.Select(g => g.First().Attribute("tool"));
这将为每个不同的tool
/ tool
对返回process
- 给定您的示例集{ "atool", "btool", "atool", "ctool" }
。但是,如果你想要的只是不同的tool
值,你可以这样做:
var results = apcxmlstate
.Select(e => e.Attribute("tool").Value)
.Distinct();
哪个会给你{ "atool", "btool", "ctool" }
。