2012-06-13 4 views
2

그냥 빨리 확인하십시오.Linq to XML 검색

Linq를 사용하여 XML로 검색 할 XML 파일이 있습니다. 내 유일한 문제는 사용자가 제공 할 XML에서 긴 코드 태그 또는 짧은 코드 태그를 사용할 수 있다는 것입니다.

<FromPerson>Joe Bloggs</FromPerson> - 롱 코드

또는

<m175>Joe Bloggs</m175> - 단축 코드 여기

내가 현재 (현재는 긴 코드를 사용하여 검색) 문서를 검색하는 방법을 보여 내 코드 조각입니다 :

prod.ProductID = product.Elements("ProductIdentifier").First(t => (t.Element("ProductIDType").Value == "45" || t.Element("ProductIDType").Value == "21")).Element("IDValue").Value; 

따라서 'ProductIdentifier'요소는 'b221'일 수 있습니다.

XML 태그가 길거나 짧은 코드인지 평가하기 위해 단순히 IF 문을 넣은 다음 값을 얻는 것보다 빠르고 효율적인 방법이 있습니까?

+0

은 조건 만 내보기에 그래 내가 생각 그것은 – Deepesh

+0

@Deepesh에 대한 대안이없는 경우 쓸 수있다 똑같다. 나는 그것을하기위한 더 좋은 방법이 없다는 것을 확인하고 싶었다. – 109221793

+0

태그가 짧거나 같은 xml로 혼합 될 수있는 태그는 모두 짧습니까? 혼합 할 수없는 경우 shortTags 사전과 longTags 사전 (shortTag가 키입니다)은 어떨까요? longTags 또는 shortTags가 xml에서 사용되고, 좋은 Dic을 선택했는지, 코드가'product.Elements (selectedDictionary [ "b221"])와 같을 수 있는지 확인합니다. –

답변

1

당신은 순서 당신은 그냥 모두에 대해 질의하고이 같은 결과에 가입 할 수 있습니다 걱정하지 않는 경우 : 당신이 요소의 순서 상관 않으면

var results = document.Descendants("ProductIdentifier") 
         .Union(document.Descendants("b221")); 

편집

당신 아래의 쿼리를 사용할 수 있습니다

var results = document.Descendants() 
         .Where(e => e.Name == "ProductIdentifier" || e.Name == "b221"); 
+0

다른 elemetns는 어떨까요 ..... –