VB.Net和XDocument - Group By

时间:2013-06-27 10:03:22

标签: asp.net xml vb.net linq-to-xml

我有以下代码需要修改为group by offer,但我不确定如何添加此查询中的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>

1 个答案:

答案 0 :(得分: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)