假设我有一个LINQ-to-XML查询,它会生成如下的匿名类型:
var aQuery =
(from a in document.Root.Elements("items")
select new {
id = a.Attribute("id").Value,
type = a.Attribute("type").Value,
modified = a.Attribute("modified").Value
});
是否有办法将该查询表达式存储在变量或常量中,然后在运行时执行?基本的想法是我有一堆这些表达式,如果它们都可以在一个地方定义然后通过单个方法动态调用,我只需要传入XML文档和要使用的表达式,这将是很方便的。感谢。
答案 0 :(得分:3)
你可以很容易地将它们定义为方法,尽管你有权使用匿名类型。
public static IQueryable<Item> GetItemsFromXml(XDocument document)
{
return (from a in document.Root.Elements("items")
select new Item
{
Id = a.Attribute("id").Value,
Type = a.Attribute("type").Value,
Modified = a.Attribute("modified").Value
});
}
话虽如此,像存储库模式这样的模式用于包装访问数据的整个过程。