将LINQ查询存储为变量/常量?

时间:2012-02-03 17:16:57

标签: c# xml linq

假设我有一个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文档和要使用的表达式,这将是很方便的。感谢。

1 个答案:

答案 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 
            }); 
}

话虽如此,像存储库模式这样的模式用于包装访问数据的整个过程。