2010-08-13 121 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 
       }; 
相关问题