【发布时间】:2010-05-17 09:35:21
【问题描述】:
我是 Linq 的新手,我正在尝试查询 XML 文档以查找特定用户的客户经理列表。 (我意识到将它放在数据库或其他东西中可能更有意义,但这种情况需要 XML 文档)。
<user emailAddress='user@fabrikam.com'>
<accountManager department='Customer Service' title='Manager'>manager@fabrikam.com</accountManager>
<accountManager department='Sales' title='Account Manager'>manager@fabrikam.com</accountManager>
<accountManager department='Sales' title='Account Manager'>manager@fabrikam.com</accountManager>
</user>
我试图创建一个对象列表(匿名类型?),其属性由 XElement 属性(部门、标题)和值(电子邮件)组成。我知道我可以得到两者中的任何一个,但我的问题是同时选择两者。
这是我正在尝试的:
var managers = _xDoc.Root.Descendants("user")
.Where(d => d.Attribute("emailAddress").Value == "user@fabrikam.com")
.SelectMany(u => u.Descendants("accountManager").Select(a => a.Value));
foreach (var manager in managers)
{
//do stuff
}
我可以访问a.Value 和a.Attribute,但我不知道如何同时和将它们存储在一个对象中。我有一种感觉,它最终会看起来像:
select new {
department = u.Attribute("department").Value,
title = u.Attribute("title").Value,
email = u.Value
};
【问题讨论】: