2010-08-13 98 views
0

我正在開發asp.net移動應用程序。我正在使用LINQ to XML來查詢XML文件。我使用下面的查詢來動態檢索查詢的名稱&值如下如何在不指定屬性名稱的情況下動態檢索屬性的名稱?

var TotalManifolds = from MF in FieldRoot.Element("FIELD-DEFINITION").Element("MANIFOLDS").Elements("MANIFOLD") 
        join SLT in FieldRoot.Element("FIELD-DEFINITION").Element("SLOTS").Elements("SLOT") 
        on (string)MF.Attribute("MID") equals (string)SLT.Attribute("PARENT") 
        select new 
        { 
         SlotName = (string)SLT.Attribute("NAME").Value, 
         SlotValue = (string)SLT.Attribute("NAME").Value 
        }; 

在上面查詢下面的語句我想沒有明確指定屬性的名稱動態檢索屬性的名稱

SlotName = (string)SLT.Attribute("NAME").Value 

這裏我明確地指定了名稱。我想要代碼可以動態檢索屬性的名稱。我是Linq xml的新手。你能否告訴我們如何以編程方式完成這項工作?或者你能提供我通過哪些鏈接解決上述問題?

回答

0

看來你正在尋找的東西,如:

// ... 
select new 
{ 
    SlotName = SLT.Attributes().First().Name, 
    SlotValue = SLT.Attributes().First().Value 
}; 
0

如果我理解正確的話,你總是可以傳遞一個變量到LINQ查詢:

var string attrName = "NAME"; // specify whatever value you need ... 

// wrap the query below in a function, if it will be reused... 
var TotalManifolds = from MF in FieldRoot.Element("FIELD-DEFINITION").Element("MANIFOLDS").Elements("MANIFOLD") 
       join SLT in FieldRoot.Element("FIELD-DEFINITION").Element("SLOTS").Elements("SLOT") 
       on (string)MF.Attribute("MID") equals (string)SLT.Attribute("PARENT") 
       select new 
       { 
        SlotName = (string)SLT.Attribute(attrName).Value, 
        SlotValue = (string)SLT.Attribute(attrName).Value 
       };