【发布时间】:2011-05-26 16:19:02
【问题描述】:
我想选择 a 的所有元素
var q = from artikel in xmlSource.Descendants("ART")
where artikel.Element("ID").Value.Equals("15")
select artikel.Elements();
//Does not work
foreach (var element in q)
{
Console.WriteLine("Customer name = {0}", element.Name);
}
如何输出所有元素?我对迭代器有一些问题。
我现在不知道如何迭代 IEnumerable 使用 foreach 并访问 element.Name 属性。
//*** 附加信息//
示例 XML
<ARTICLE>
<ART>
<ID>0020209</ID>
<EXP>36</EXP>
<QTY>1</QTY>
<SMCAT>B</SMCAT>
<DSCRD>Example Description 1</DSCRD>
<ARTCOMP>
<COMPNO>10710</COMPNO>
<ROLE>H</ROLE>
<ARTNO1>320059</ARTNO1>
<ARTNO2>320059</ARTNO2>
</ARTCOMP>
<ARTCOMP>
<COMPNO>10710</COMPNO>
<ROLE>V</ROLE>
<ARTNO1>320059</ARTNO1>
<ARTNO2>320059</ARTNO2>
</ARTCOMP>
<ARTBAR>
<CDTYP>E13</CDTYP>
<BC>7680202580475</BC>
<BCSTAT>A</BCSTAT>
</ARTBAR>
<ARTPRI>
<VDAT>2010-12-01T00:00:00+01:00</VDAT>
<PTYP>PEXF</PTYP>
<PRICE>30</PRICE>
</ARTPRI>
</ART>
<ART>
<ID>0020244</ID>
<EXP>60</EXP>
<QTY>30</QTY>
<DSCRD>FERRO GRADUMET Depottabl 30 Stk</DSCRD>
<ARTCOMP>
<COMPNO>1836</COMPNO>
<ROLE>H</ROLE>
<ARTNO1>685230</ARTNO1>
<ARTNO2>685230</ARTNO2>
</ARTCOMP>
<ARTCOMP>
<COMPNO>1836</COMPNO>
<ROLE>V</ROLE>
<ARTNO1>685230</ARTNO1>
<ARTNO2>685230</ARTNO2>
</ARTCOMP>
<ARTCOMP>
<COMPNO>5360</COMPNO>
<ROLE>L</ROLE>
<ARTNO1>685230</ARTNO1>
<ARTNO2>685230</ARTNO2>
</ARTCOMP>
</ART>
</ARTICLE>
我必须将此 XML 文件导入到规范化的 MySQL 表中。 ARTCOMP / ARTBAR 是 MySQL 数据库中的附加表。
一开始,我想在一个空的 MySQL 表中将所有字段创建为 varchar()。另外一个问题是,并非每个 ART 元素都有相同的子元素。也许有更好的方法来查找所有可能的子元素(一种模式)。
【问题讨论】:
-
您的
foreach没有问题,更有可能是您的查询没有返回任何元素。尝试在调试器中检查q。它包含什么? -
@driis:不,给定的代码无法编译。
Name不是IEnumerable<XElement>的属性...
标签: c# linq ienumerable