0

値がテキストで始まらない xml ファイルからすべての属性値を取得しようとしています

私はこのコードを持っています

IEnumerable<XElement> elements =
    (from el in xmlFile.Root.Elements(elementName)
     where (string)el.Attribute(attributeName)  !StartWith("abc")
     select el);

どうすればこれを修正できますか

4

2 に答える 2

2

有効な式を使用する必要があります。

where !el.Attribute(attributeName).Value.StartsWith("abc")

LINQ 句に入るものは "魔法の" 構文ではないことを理解することが重要です。これは、クエリ式 (この場合)によって宣言された範囲変数whereを使用できる単なる通常の式です。したがって、「これを LINQ 以外で記述していて、要素を参照するという変数があった場合、属性値が で始まっていないことを確認する条件をどのように記述したらよいでしょうか?」と自問する必要があります。elelifabc

(属性が欠落している可能性があり、nullを取得したい場合は明示的な変換を使用しますが、この場合、とにかく属性が欠落しているときに強打し、文字列値が必要なだけなので、次のようにすることができますValueプロパティをうまく使用してください。)

ここには句 (および trivial )しかないので、クエリ式以外の形式を使用する方がおそらく読みやすいことに注意してください。whereselect

var elements = xmlFile.Root.Elements(elementName)
                      .Where(el => !el.Attribute(attributeName).Value.StartsWith("abc"));
于 2012-07-25T08:15:29.630 に答える
0

これで試してください(startwithを調整してください)

IEnumerable<XElement> elements = 

from el in xmlFile.Root.Elements(elementName) 
where ! el.Attribute(attributeName).Value.StartWith("abc") 
select el;
于 2012-07-25T08:16:17.630 に答える