我收到编译器错误:无法将类型'System.Xml.Linq.XElement'的表达式转换为类型AutomationStatusType 我在做什么错?无法将类型'System.Xml.Linq.XElement'的表达式转换为类型XXX
XML:
<Status>
<Version>33</Version>
<Status>Running</Status>
</Status>
查询:
var query = (from status in doc.Descendants("Status")
select new AutomationStatus
{
Version = (string)status.Element("Version"),
Status = (AutomationStatusType)status.Element("Status"),
});
类:
public class AutomationStatus
{
[XmlAttribute]
public string Version { get; set; }
[XmlElement]
public AutomationStatusType Status { get; set; }
}
[DataContract]
public enum AutomationStatusType
{
[EnumMember]
Idle,
[EnumMember]
Running
}
编辑: 后阅读您的意见,我确实增加了以下外壳:
Status = Enum.Parse(typeof(AutomationStatusType), (string)status.Element("Status")),
现在我得到一个编译错误: 无法键入“System.Xml.Linq.XElement”转换为“Verint.AP2.Manager.AutomationStatusType”
但是,如果我创建一个匿名类我我能够摆脱错误的:
var query = (from status in doc.Descendants("AutomationStatus")
select new /*AutomationStatus*/
{
Version = (string)status.Element("Version"),
Status = Enum.Parse(typeof(AutomationStatusType), (string)status.Element("Status")),
TimeStamp = (DateTime) status.Element("TimeStamp")
});
什么可以是问题,我怎么能创建类(非匿名?) 谢谢!
为什么你认为这将是最好用的XmlSerializer在LINQ? – user829174 2012-02-29 10:20:03
我会说在编码方面它更简单 - 并不是更好。依赖于它如何使用XmlSerializer可能会更快。也许我应该说“你可以使用XmlSerializer而不是” – dice 2012-02-29 10:59:39