0

Linq to xml クエリに少し問題があります。以下のデータをご覧ください。

<area id="16">
    <standard value="1">
      <temp value="M" />
    </standard>
    <standard value="2">
      <temp value="M" />
    </standard>
    <standard value="3">
      <temp value="M" />
    </standard>
  </area>

  <area id="17">
    <standard value="1">
      <temp value="M" />
    </standard>
    <standard value="2">
      <temp value="M" />
    </standard>
    <standard value="3">
      <temp value="M" />
    </standard>
  </area>

基本的には、エリアIDと基準値を変数として持っている場合、xmlから一時値を抽出したいです。

次のクエリで面積を取得できます

    IEnumerable<XElement> area =
        from c in areaRisk.Elements("area")
        where (string)c.Attribute("id") == ddlArea.SelectedValue.ToString()
        select c;

しかし、XElement列挙可能領域で同様のクエリを使用して一時値を取得する方法、または上記のクエリを変更して値を抽出できるかどうかはわかりません。

どんな助けでも大歓迎です!

ありがとう、

スティーブ

4

2 に答える 2

2

1 つのクエリですべてを実行できます。

// change the assignment with whatever you want
int areaId = 17;
int standardValue = 3;

構文ベースのクエリ ソリューション:

string tempValue =
    (from c in areaRisk.Elements("area")
     where (int)c.Attribute("id") == areaId 
     from s in c.Elements("standard")
     where (int)s.Attribute("value") == standardValue 
     select (string)c.Element("temp").Attribute("value")).FirstOrDefault();

またはメソッドベースのクエリ:

string tempValue = areaRist.Elements("area")
                           .FirstOrDefault(a => (int)a.Attribute("id") == areaId)
                           .Elements("standard")
                           .FirstOrDefault(s => (int)s.Attribute("value") == standardValue)
                           .Element("temp")
                           .Attribute("value")
                           .Value;
于 2013-08-12T10:35:56.120 に答える