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

C# 将LINQ查询存储为变量/常量?,c#,xml,linq,C#,Xml,Linq,假设我有一个LINQ到XML查询,它生成一个匿名类型,如下所示: var aQuery = (from a in document.Root.Elements("items") select new { id = a.Attribute("id").Value, type = a.Attribute("type").Value,

假设我有一个LINQ到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文档和使用哪个表达式,这将非常方便。谢谢。

您可以很容易地将它们定义为方法,尽管您不同意使用匿名类型

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 
            }); 
}
公共静态IQueryable GetItemsFromXml(XDocument文档)
{
返回(从document.Root.Elements(“items”)中的
选择新项目
{
Id=a.属性(“Id”).值,
类型=a.属性(“类型”).值,
修改=a.属性(“修改”).值
}); 
}

话虽如此,像repository模式这样的模式被用来包装访问数据的整个过程。

“如果有办法将查询表达式存储在变量或常量中,然后在运行时执行?”您自己已经这样做了,将查询存储在aQuery变量中……我认为您没有抓住要点。显然,它可以存储为局部变量,否则Linq中的任何内容都不会像它那样工作。但是你不能定义一个“var”类型的类级变量,这正是我所驱动的atI可以看到问题可能被误解的地方,但我一直在寻找OP的确切含义,因此对它的理解很好。是的,不幸的是,它需要匿名…没什么大不了的,我主要是为了组织目的而做的,谢谢