2013-06-27 2 views
1

У меня есть следующий код, который мне нужно внести в group by offer, но я не уверен, как добавить в этот вопрос раздел group by.VB.Net и XDocument - Group By

Любые идеи?

propertyInfo = myXmlFile.Descendants("offer").Descendants("site") _ 
    .Where(Function(f) _ 
    f.Attributes("code").First.Value = Location.Text) _ 
    .Select(Function(f) New With { _ 
    .LOCATION = f.Attributes("code").First.Value, _ 
    .TITLE = f.Parent.Attributes("title").First.Value, _ 
    .OFFER = f.Parent.Attributes("offerid").First.Value, _ 
    .POPUPDESC = f.Parent.Descendants("short_desc").Value 

Пример XML

<offers> 
    <offer title="Offer title" offerid="AS32"> 
    <short_desc><![CDATA[ 
     <div>Your HTML's body <a href='dfgdfgdfgdfg.html'>Offer title</a> 
     </div> 
    ]]></short_desc> 

    <site code="CO"> 
     <year_week_start>201344</year_week_start> 
     <year_week_end>201414</year_week_end> 
    </site> 

    <site code="FH"> 
     <year_week_start>201446</year_week_start> 
     <year_week_end>201450</year_week_end> 
    </site> 
    </offer> 
</offers> 
+0

Вам действительно нужно сделать это с помощью синтаксиса метода LINQ? Я думаю, что для таких задач, как группировка синтаксиса запроса http://msdn.microsoft.com/en-us/library/bb531412.aspx, легче справиться. И образец XML поможет. Вы хотите группировать атрибут 'offerид'? –

ответ

0

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

propertyInfo = myXmlFile.Descendants("offer").Descendants("site") _ 
    .Where(Function(f) _ 
    f.Attributes("code").First.Value = Location.Text) _ 
    .Select(Function(f) New With { _ 
    .LOCATION = f.Attributes("code").First.Value, _ 
    .TITLE = f.Parent.Attributes("title").First.Value, _ 
    .OFFER = f.Parent.Attributes("offerid").First.Value, _ 
    .POPUPDESC = f.Parent.Descendants("short_desc").Value) _ 
    .GroupBy(Function(f) f.OFFER)