如何将LINQ查询转换为匿名类型

本文关键字:类型 转换 查询 LINQ | 更新日期: 2023-09-27 18:07:02

我的大脑出现了这样的故障。我已经选择了我需要的元素和值,我只是在努力使这个返回成为匿名类型:

这是XML:

<r25:space xl:href="space.xml?space_id=244" id="BRJDMjQ0" crc="00000023" status="est">
  <r25:space_id>244</r25:space_id>
  <r25:space_name>BEC*103</r25:space_name>
  <r25:formal_name>Branson Education Center 103</r25:formal_name>
  <r25:partition_id />
  <r25:partition_name />
  <r25:favorite>F</r25:favorite>
  <r25:max_capacity>24</r25:max_capacity>
  <r25:fill_ratio />
  <r25:last_mod_user>kleierd</r25:last_mod_user>
  <r25:last_mod_dt>2009-11-19T15:35:33</r25:last_mod_dt>
</r25:space>

我需要"space_id"answers"space_name"的值,我可以通过以下方式获得:

var ids = from id in xml.Descendants()
                  where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name"
                  select (string)id.Value;

但我真的很喜欢这样:

var ids = from id in xml.Descendants()
                  where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name"
                  select new
                  { 
                      theId = //The id val would go here,
                      theName = //The name goes here
                  };

如何将LINQ查询转换为匿名类型

var ids = from id in xml.Descendants()
          where id.Name.LocalName == "space_id" || id.Name.LocalName == "space_name"
          select new
          { 
                theId = id.Value,
                theName = id.Name.LocalName
          };

id将保存值:

theId     theName 
244       pace_id 
BEC*103   space_name 

这将选择相同的节点:

XNamespace r25 = "yourSchemaDefinition";
var ids = xml.Descendants(r25 + "space_id")
             .Union(xml.Descendants(r25 + "space_name"))
             .Select(id => new
                           { 
                              theId = id.Value,
                              theName = id.Name.LocalName
                           });

注意:我已经将r25模式定义添加到您的xml根节点