显式转换XAttribute值

时间:2009-12-28 19:58:03

标签: c# .net casting linq-to-xml

我最近写了一段看起来有点像这样的代码:

IEnumerable<DTO.Employee> xEmployee =
    from e in xDoc.Descendants("Employee")
    where int.Parse(e.Attribute("Id").Value) == emp.Id
    select new DTO.Employee
    {
        Id = (int)e.Attribute("Id"),
        LastName = (string)e.Element("LastName"),
        FirstName = (string)e.Element("FirstName"),
        Email = (string)e.Element("Email")
    };

但是,我对在where子句中转换为int感到困惑。首先,我写了类似

的内容
where (int)(e.Attribute("Id").Value) == emp.Id

没有编译。 为什么我可以进行显式强制转换(e.Attribute(“Id”)),但我不能这样做(e.Attribute(“Id”)。值)?

2 个答案:

答案 0 :(得分:4)

检查XAttribute类的显式运算符重载。

public static explicit operator int(XAttribute attribute);

答案 1 :(得分:1)

有一个explicit conversion from XAttribute to int - 但没有从stringXAttribute.Value的类型)到int的明确转换。