2013-06-21 2 views
0

나는 쿼리를 쳤다. 제발 도와주세요.그룹 방법/그룹 가입 LINQ를 사용하여 XElements

나는

 <Set type="Main"> 
      <FirstUnit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
      <CreateDate>2013-06-06T13:19:17.457</CreateDate> 
      <PrimaryKey>1</PrimaryKey> 
      </FirstUnit> 
      <Secondunit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
      <CreateDate>2013-06-06T13:19:17.457</CreateDate> 
      <PrimaryKey>1</PrimaryKey> 
      <Exercise>Test</Exercise> 
      </SecondUnit> 
      <FirstUnit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
      <CreateDate>2013-06-06T13:19:17.457</CreateDate> 
      <PrimaryKey>2</PrimaryKey> 
      </FirstUnit> 
      <Secondunit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/"> 
      <CreateDate>2013-06-06T13:19:17.457</CreateDate> 
      <PrimaryKey>2</PrimaryKey> 
      <Exercise>Test</Exercise> 
      </SecondUnit> 
    </Set> 

지금 내가 원하는 모든 그룹에 기본 키를 기반으로 단위 인 XML을 가지고있다. 예를 들어, FirstUnit 및 SecondUnit은 하나의 그룹에서 노드 값 "<Primarykey>"이고 다른 그룹에서는 PrimaryKey 노드 값이 "2"이어야합니다. 나는 다음과 같은 쿼리를 시도

은 더 정제는

var elements = xDocument.GroupBy(a => a.Elements().Descendants().Where(x => x.Name.LocalName == "PrimaryKey").ToList()); 

감사 사전에, 아직에서 수행되어야한다. 단지 로컬 이름을 확인하는 Where 절을 사용하여 - 필요한 경우

// If <Set> is the document element, change Descendants("Set") to Root 
var elements = xDocument.Descendants("Set") 
         .Elements() 
         .GroupBy(x => (int) x.Element("PrimaryKey")); 

은 (요소의 네임 스페이스를 공급 : 그것은 나에게 보인다

답변

1

당신은 단지 값 이러한 요소의에 의해 그룹에 필요 약간 추한 것입니다.)

이 방법이 효과가 없다면 수행하려는 작업에 대해 자세히 알려주십시오.

+0

고마워요. Jon, 두 개의 항목이있는 List 으로 출력됩니다. 첫 번째에는 "FirstUnit"및 "SecondUnit"이 있어야합니다. 기타에는 두 번째 "FirstUnit"및 "SecondUnit 기본 키 기반 – Baks