Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用LINQ从同名集合中排除子节点_C#_Linq_Element_Descendant - Fatal编程技术网

C# 使用LINQ从同名集合中排除子节点

C# 使用LINQ从同名集合中排除子节点,c#,linq,element,descendant,C#,Linq,Element,Descendant,根据此XML,请注意BBB存在于两个节点级别 <?xml version="1.0" encoding="utf-8"?> <AAA> <BBB> <BBB>ONE</BBB> <CCC>1</CCC> <DDD>2</DDD> <EEE>3</EEE> </BBB> <BBB> <B

根据此XML,请注意BBB存在于两个节点级别

<?xml version="1.0" encoding="utf-8"?>
<AAA>
  <BBB>
    <BBB>ONE</BBB>
    <CCC>1</CCC>
    <DDD>2</DDD>
    <EEE>3</EEE>
  </BBB>
  <BBB>
    <BBB>TWO</BBB>
    <CCC>4</CCC>
    <DDD>5</DDD>
    <EEE>6</EEE>
  </BBB>
  <BBB>
    <BBB>THREE</BBB>
    <CCC>7</CCC>
    <DDD>8</DDD>
    <EEE>9</EEE>
  </BBB>
</AAA>
问题是,LVL2同时拾取父BBB和子BBB。 似乎找不到有效过滤子体的方法

例如,我认为这是关键,但没有结果:

var lv2s = from lv2 in xdoc.Elements("BBB") select lv2;
希望你能给我一个解决这个问题的方法

--------------编辑-----------------

好吧,我知道我做错了什么。一个排版

LVL2应该利用LVL1,如下所示:

var lv2s = from lv2 in lv1s.Elements("BBB") select lv2;   
也就是说,他的方法比我提出的臃肿的解决方案要好得多:

var parentBbbs =xdoc.Element("AAA").Elements("BBB");
var parentBbbs =xdoc.Element("AAA").Elements("BBB");

只要document.Root.Elements()就可以了


基本上,子体()是递归的,而元素()只获取直接的子元素。

您需要开始获取根元素,然后使用
Elements
方法选择父BBB:

var parentBbbs =xdoc.Element("AAA").Elements("BBB");