LINQ към XML в C# where клауза

Имам част в xml:

<result index="0" status="0">
          <test field="aaa">value_a</test>
          <test field="bbb">value_b</test>
          <one>
            <name></name>
            <res1></res1>
          </one>
          <two>
            <name></name>
            <res2></res2>
          </two>
          <answer></answer>
          <error></error>
        </result>

var rez = from item in doc.Descendants("result")
                          where 


                          select item;

                foreach (var item in rez)
                {
                    item.Element("res1").SetValue(x);
                    item.Element("res2").SetValue(y);
                }

Какво да пиша вътре в „къде“, за да избера елемент (блок „резултат“), където елементът „тест“ с атрибут „aaa“ има стойност_а, И елементът „тест“ с атрибут „bbb“ има стойност_b


person pingve    schedule 17.08.2011    source източник
comment
как са свързани aaa и value_a? имаш ли някакъв речник, в който свързваш тези стойности?   -  person hcb    schedule 17.08.2011
comment
да неговия речник‹низ, списък‹низ››, но също така бих искал да знам как бих направил това с твърдо кодиран aaa низ за тестови цели   -  person pingve    schedule 17.08.2011


Отговори (2)


Има няколко различни възможности, но избрах да извадя двойките стойности за яснота и може би леко подобрение на производителността. Ако броят на тестовите елементи е голям, можете да направите testPairs речник.

var rez = from item in doc.Descendants("result")
            let testPairs = item.Elements("test")
                .Select(t => Tuple.Create((string)t.Attribute("field"), (string)t)).ToArray()
            where
                testPairs.Any(t => t.Item1=="aaa" && t.Item2=="value_a") &&
                testPairs.Any(t => t.Item1=="bbb" && t.Item2=="value_b")
            select item;
person jdasilva    schedule 17.08.2011

Не съм сигурен, вероятно това е, което имате предвид

where item.Element("test").Value == "something" 
&& item.Element("test").Attribute("field").Value =="aaa"
person V4Vendetta    schedule 17.08.2011
comment
откъде знае кой тестов елемент изглежда тук item.Element(test).Value == нещо, тъй като имам нужда точно този с атрибут aaa да има стойност a, а този с атрибут bbb има стойност b, не единия или другия . - person pingve; 17.08.2011