【发布时间】:2012-04-18 19:34:10
【问题描述】:
我一直在查看以下链接中的 LINQ 示例;我已经在链接下面发布了代码。
是否可以修改此示例以使var 中返回的项目包含在与 doc.Descendants("person") 过滤器匹配的项目中找到的所有子元素?我基本上希望这个 XML 查询能够像 SQL 选择 * 这样我就不必像他们对饮料、moneySpent 和 zipCode 所做的那样明确指定字段名称。
http://broadcast.oreilly.com/2010/10/understanding-c-simple-linq-to.html#example_1
static void QueryTheData(XDocument doc)
{
// Do a simple query and print the results to the console
var data = from item in doc.Descendants("person")
select new
{
drink = item.Element("favoriteDrink").Value,
moneySpent = item.Element("moneySpent").Value,
zipCode = item.Element("personalInfo").Element("zip").Value
};
foreach (var p in data)
Console.WriteLine(p.ToString());
}
【问题讨论】:
-
您是否有一个容器类来实际定义这些属性名称?如果不是,请考虑您不能按名称使用您的代码无法直接看到的字段(没有反射)。您可能可以制作一个工具,根据您的元素名称反射性地模拟容器,但您不能直接使用这些字段。
-
这不是我想要的 100%,但它让我足够接近以获得解决方案,我认为这很好,因为我一开始并不知道我在寻找什么.