linq to xml: как выбрать значение из элементов

Мне нужно вернуть список элементов <AssetText>. Мой запрос ниже возвращает только первый AssetText. Любые мысли высоко ценится.

var q = from c in xDoc.Descendants("Product")
        where (int) c.Element("ProductView").Element("ViewId") == 44
        select (string) c.Element("ProductView").Element("AssetText").Element("Text");

 

<Product>
  <ProductView>
    <ViewId>44</ViewId>
    <AssetText>
      <Text>my first Asset Text</Text>
    </AssetText>
    <AssetText>
      <Text>my second Asset Text</Text>
    </AssetText>
  </ProductView>
  <ProductView>
    <ViewId>45</ViewId>
    <AssetText>
      <Text>my third Asset Text</Text>
    </AssetText>
  </ProductView>
</Product>
10.12.2008 13:49:57
1 ОТВЕТ
РЕШЕНИЕ

Перейдите Element("AssetText")на, Elements("AssetText")чтобы получить все элементы AssetText. Обратите внимание, что вам также потребуется изменить остальную часть запроса, иначе он будет совпадать только тогда, когда первый ProductView имеет ViewId, равный 44. Я предлагаю вам использовать второе предложение «from»:

var q = from c in xDoc.Descendants("Product")
        from view in c.Elements("ProductView")
        where (int) view.Element("ViewId") == 44
        from assetText in view.Elements("AssetText")
        select assetText.Element("Text");
8
10.12.2008 14:00:02