2015-03-04 20 views
2

Я попытался с помощью XML Reader, Xpath ... и знаю linq Но не найду способ решить эти проблемы.Несколько элементов для нескольких строк

Я должен извлечь информацию, для каждого заказа в одну строку, в этом ряду должна быть информация из первых элементов и предметов и заказов, а также статус орденов ...

Есть ли способ извлечь всю эту информацию в одну строку в одном linq-запросе? Или мне нужно строить для этого шаги?

(VisualStudio 2010/2013 C# .Net 4)

<Account> 
    <Name>Name1</Name> 
    <InId>100</InId> 
    <CustomID>100000087</CustomID> 
    <ZipCode>zipcode</ZipCode> 
    <Items> 
     <Item> 
      <ItemID>700</ItemID> 
      <ItemName>Itemname1</ItemName> 
      <Orders> 
       <Order> 
        <IDIndex>1000</IDIndex> 
        <IDParam>T1</IDParam> 
        <Themes> 
         <Theme> 
          <Status>Alert</Status> 
          <Lastget>01.01.2015</Lastget> 
         </Theme> 
        </Themes> 
       </Order> 
      </Orders> 
      <Item> 
      <ItemID>800</ItemID> 
      <ItemName>Itemname2</ItemName> 
      <Orders> 
       <Order> 
        <IDIndex>5001</IDIndex> 
        <IDParam>T1</IDParam> 
        <Themes> 
         <Theme> 
          <Status>Alert1</Status> 
          <Lastget>01.01.2015</Lastget> 
         </Theme> 
        </Themes> 
       </Order> 
       <Order> 
        <IDIndex>5002</IDIndex> 
        <IDParam>T1</IDParam> 
        <Themes> 
         <Theme> 
          <Status>Alert1</Status> 
          <Lastget>01.01.2015</Lastget> 
         </Theme> 
        </Themes> 
       </Order> 
       <Order> 
        <IDIndex>5003</IDIndex> 
        <IDParam>T1</IDParam> 
        <Themes> 
         <Theme> 
          <Status>Alert2</Status> 
          <Lastget>01.01.2015</Lastget> 
         </Theme> 
        </Themes> 
       </Order> 
      </Orders> 
     </Item> 
    </Items> 
    </Account> 
+0

Наверняка есть, как вы хотите, чтобы информация была представлена? Также стоит показать, что вы пробовали. Также ваш xml чего-то не хватает. – Vladimirs

+0

Я вижу ваш xml, но было бы неплохо увидеть, что вы ожидаете от конечного результата. Это облегчает для людей, пытающихся ответить на вопросную модель, что вы ищете. – TYY

+0

OK Результат должен быть Name, InID, CustomID, ItemID, ItemName, IDIndex, IDParam, Status, Lastget и для каждого заказа ... – sitO

ответ

1

После запроса даст вам необходимые данные: -

var result = xdoc.Root.Descendants("Item") 
       .Select(x => new 
      { 
      Name = (string)x.Document.Root.Element("Name"), 
      InId = (string)x.Document.Root.Element("InId"), 
      CustomID = (string)x.Document.Root.Element("CustomID"), 
      ItemID = (string)x.Element("ItemID"), 
      ItemName = (string)x.Element("ItemName"), 
      OrdersList = x.Descendants("Order") 
          .Select(y => new 
           { 
           IDIndex = (string)y.Element("IDIndex"), 
           IDParam = (string)y.Element("IDParam"), 
           ThemesList = y.Descendants("Theme") 
               .Select(z => new 
               { 
               Status = (string)z.Element("Status"), 
               Lastget = (string)z.Element("Lastget") 
               }).ToList() 
           }).ToList() 
     }); 

Пожалуйста, обратите внимание, что два списка будут созданы 2 items, и для каждого элемента я создаю список orders и в каждом списке заказов themes.

+0

Большое спасибо. Я получаю результат. Я получаю Result.count в моем примере из 43 в моем примере xml, который равен 4. В то время как я новичок на этом этапе, мне нужно проверить списки ... – sitO

+0

Итак, да, я сделал несколько тестов и цикл по темам список - мой идеальный результат !!! Thankx – sitO

+0

@sitO - Добро пожаловать! Пожалуйста, примите это как ответ :) –

Смежные вопросы