我最近写了一段看起来有点像这样的代码:
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”)。值)?
答案 0 :(得分:4)
检查XAttribute类的显式运算符重载。
public static explicit operator int(XAttribute attribute);
答案 1 :(得分:1)
有一个explicit conversion from XAttribute
to int
- 但没有从string
(XAttribute.Value
的类型)到int
的明确转换。