c# - 无法将类型为“System.Xml.Linq.XElement”的表达式转换为类型 XXX

标签 c# linq

我收到编译器错误:无法将类型为“System.Xml.Linq.XElement”的表达式转换为类型 AutomationStatusType 我做错了什么?

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")
                            });

可能是什么问题,我如何创建类(非匿名?) 谢谢!

最佳答案

当您解析状态而不是现在的行时,请使用以下代码段。

Status = Enum.Parse(typeof(AutomationStatusType), status.Element("Status")

关于c# - 无法将类型为“System.Xml.Linq.XElement”的表达式转换为类型 XXX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9497137/

相关文章:

c# - “BeginContext”在应用程序启动时的当前上下文错误中不存在

c# - 搜索 - IQueryable Linq

c# - 使用户控件内的标签对于所有鼠标事件都可单击?

c# - 如何将 C# 代码转换为 IronPython

c# - 将值附加到查询字符串

c# - 通过 count() 进行左连接和分组的 Linq 查询

c# - 使用 LINQ 填充具有单个列值的字符串

c# - LINQ:无法将类型 'System.Int32' 转换为类型 'System.Object'

c# - 我可以在 C# 中动态生成 linq 表达式吗?

c# - (为了提高性能)确定异常类型的更好方法是哪种?