如何将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
};
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根节点