2010-11-15 10 views
5

Estoy programando en C# y trabajando con un XDocument. Quiere agregar un elemento en el árbol si y solo si no hay otros elementos que tengan un valor de atributo coincidente.¿Cómo usar LINQ para determinar si existe un valor de atributo específico?

Por ejemplo, ¿hay una expresión LINQ que pueda usar para ver el elemento a continuación y ver si ya existe un elemento foo con el mismo nombre antes de agregarlo?

<people> 
    <foo Name="Bob"> </foo> 
    <foo Name="Larry"></foo> 
    <foo Name="Tom"></foo> 
</people> 

que quiero hacer algo como esto ...

while(myXDocument.Element("people").Elements("foo").Attribute("Name").Contains(myName)) 
{ 
    // modify myName and then try again... 
} 

Respuesta

8

Esto debería funcionar:

XElement.Any(element => element.Attribute("Name").Value == myName) 

Se devolverá true si hay un atributo que es igual NamemyName

+0

Hola, gracias por su respuesta, que era muy útil! Pero, usted escribió "=" en lugar de "==", ¿verdad? –

+1

De hecho lo hice, como un tipo de VB a veces es difícil cambiar a C# – wagi

4

Es posible que desee ver en IEnumerable.Any en los XDocument.Elements. Esto determina si algún elemento de una secuencia satisface una condición.

Cuestiones relacionadas