2009-03-12 22 views
1

Zaten var olan veya olmayan bir öğenin değerini/alt kümelerini ayarlamak istiyorum. Eğer eleman yoksa, benim için otomatik olarak oluşturulmasını istiyorum.LINQ-to-XML'de Öğe Bul veya Oluştur

Bu sayede, kodum yalnızca öğenin içeriği hakkında endişelenmeli ... zaten var olup olmamasına değil. (Onunla işim bittiğinde, varolduğu garanti edilir).

Bu işlev zaten LINQ-to-XML'de var mı? Henüz bulamadım ve kendi yöntemimi yazmayı düşünüyorum.

cevap

4

İşte ben bugüne kadar ne var:

public static IEnumerable<XElement> ElementsOrCreate(this XElement parent, XName name) 
{ 
    IEnumerable<XElement> elements = parent.Elements(name); 
    if (!elements.Any()) 
    { 
     XElement element = new XElement(name); 
     parent.Add(element); 
     elements = new XElement[] { element }; 
    } 
    return elements; 
} 

Not (uzatma için) İlk bağımsız değişken bir XElement değil System.Xml.Linq.Extensions.Elements gibi bir XContainer olduğunu. XElement olmayan XContainer diğer XDocument ve bu yöntem, bir XDocument için işe yaramıyor (ve çok mantıklı değil).

İlgili konular