2010-07-24 3 views
3

это мой XML-файлКонтрольное значение существует в LINQ

<Persons> 
    <Person> 
    <id>1</id> 
    <Name>Ingrid</Name> 
    </Person> 
    <Person> 
    <id>2</id> 
    <Name>Ella</Name> 
    </Person> 
</Persons> 

Я использую Linq XML.

здесь идентификатор должен быть автоматически сгенерирован ..

мне нужно проверить, если значение идентификатора узла уже существует.

Если не существует, он должен создать новый идентификатор. Сделайте это с помощью linq. любые указатели?

спасибо

ответ

5
XDocument doc = XDocument.Parse(xml); 

    int id = 1; 
    // if you need the element 
    XElement ingrid = (from person in doc.Root.Elements("Person") 
         where (int)person.Element("id") == id 
         select person).FirstOrDefault(); 
    // if you just need to know if it is there 
    bool exists = (from person in doc.Root.Elements("Person") 
         where (int)person.Element("id") == id 
         select person).Any(); 
    // generate a new ID 
    int newId = ((from person in doc.Root.Elements("Person") 
        select (int?)person.Element("id")).Max() ?? 0) + 1;