2011-08-28 5 views
0

ADO datacontext를 통해 그룹 분류를 사용하는 데이터베이스에서 쿼리를 실행하고 xml 문서를 반환하는 prgm을 작성했습니다. 나는 작업에 XML을 얻을 수 있어요,하지만 XAttribute("pub_id", from p in g select new { p.Pubs_id })을주고있다 : 아래 ADO Linq to xx

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Pubs.BookStore+BookResults,<>f__AnonymousType1`1[System.String]] 

코드입니다 : 원하는

XDocument xdoc = new XDocument(new XElement("reports", 
from b in bookResults 
group b by b.Title1 into g 
select new XElement("book", 
    new XAttribute("pub_id", from p in g select new { p.Pubs_id }), 
    new XElement("Title", g.Key), 
    from bk in g 
    select new XElement("Name", new XAttribute("au_id", bk.Au_id), bk.Name)) 
) 

xdoc.Save("Books.xml");  

샘플 XML 출력

<reports> 
    <book pub_id="1389"> 
    <Title>The Busy Executive's Database Guide</Title> 
    <Name au_id="409-56-7008">Bennet,Abraham</Name> 
    <Name au_id="213-46-8915">Green,Marjorie</Name> 
    </book> 
    <book pub_id="0877"> 
    <Title>Fifty Years in Buckingham Palace Kitchens</Title> 
    <Name au_id="648-92-1872">Blotchet-Halls,Reginald</Name> 
    </book> 
    <book pub_id="0877"> 
    <Title>The Gourmet Microwave</Title> 
    <Name au_id="722-51-5454">DeFrance,Michel</Name> 
    <Name au_id="899-46-2035">Ringer,Anne</Name> 
    </book> 
(술집에게 샘플 DB를 사용)
+0

, 난 다음 않았고, 그것은 새가 – SKatz

+0

그룹 B 근무 {b.Title1, b.Pubs_id} g – SKatz

+0

thnks에 도움을 요청하십시오. – SKatz

답변

2

시퀀스를 속성 값으로 반환하는 쿼리를 제공하고 있습니다. 심지어

new XAttribute("pub_id", (from p in g select new { p.Pubs_id }).Single()) 

또는 :

new XAttribute("pub_id", (from p in g select p.Pubs_id).Single()) 

그것은 그 인지 정말 분명하지 않다 내 생각 엔 방금로 변경해야하는 경우 하나의 결과를,있을 전망이다 당신이 뭘 기대하고 있는지 -하지만 그것이 문제입니다. LINQ to XML이 쿼리에 ToString을 호출하면 그 결과가 나타납니다. 두 번째 생성자 인수를 단일 값을 제공하는 것으로 변경하십시오. 그러나이를 수행해야합니다.

코드를 들여 쓰기하면 코드가 더욱 명확 해집니다. 실제로는 코드를 보는 것만으로는 분명하지 않습니다. 같은 질문에 규정 된 나는 당신의 쿼리를 다시 작성합니다 : 당신이 날 내가 키의 일부로 PUB_ID 필요가 있다는 것, 생각을 가지고 말을

from b in bookResults 
group b by b.Title1 into g 
select new XElement("book", 
    new XAttribute("pub_id", from p in g select new { p.Pubs_id }), 
    new XElement("Title", g.Key), 
    from bk in g 
    select new XElement("Name", new XAttribute("au_id", bk.Au_id), bk.Name)) 
) 
+0

빠른 응답을 보내 주셔서 감사 드리며, 디버깅 오류가 발생합니다. 시퀀스에 두 개 이상의 요소가 포함되어 있습니다. – SKatz

+0

@Skatz : 좋아요, 두 개 또는 더 많은 요소 ... 속성에서 어떤 가치를 원하십니까? 여기서 문제를 이해하는 것이 중요합니다. 그렇게 할 때까지 솔루션을 해결할 수 없습니다. 문제는 현재 속성에 여러 값을 제공하려고하지만 속성은 하나의 값만 가져옵니다. 나는 지금 잠자리에 들지만,이 모든 것이 도움이되지 않는다면, 더 자세한 내용을 남겨두면 아침에 도와 줄 것입니다. –

+0

thnks, xml sippet 출력을 – SKatz