Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
保存LINQ查询以供以后使用的最简单方法是什么?_Linq - Fatal编程技术网

保存LINQ查询以供以后使用的最简单方法是什么?

保存LINQ查询以供以后使用的最简单方法是什么?,linq,Linq,我有一个功能的请求,以便能够保存用户的搜索以便以后使用 现在,我正在根据用户指定的内容动态构建LINQ语句 所以我开始想,有没有一种简单的方法可以让我简单地获取用户创建的查询,并将其保存到某个地方,最好是我的数据库,以便以后检索 是否有某种方法可以将查询持久化为XML或JSON,然后在以后重新构造查询?看看Expression类。这将允许您预编译查询。尽管为了更好的性能而将其保留在DB中供以后使用是值得怀疑的。以前从未这样做过,但我有一个想法: 如果要在端点上运行查询,可以提取生成为查询字符串的

我有一个功能的请求,以便能够保存用户的搜索以便以后使用

现在,我正在根据用户指定的内容动态构建LINQ语句

所以我开始想,有没有一种简单的方法可以让我简单地获取用户创建的查询,并将其保存到某个地方,最好是我的数据库,以便以后检索


是否有某种方法可以将查询持久化为XML或JSON,然后在以后重新构造查询?

看看Expression类。这将允许您预编译查询。尽管为了更好的性能而将其保留在DB中供以后使用是值得怀疑的。

以前从未这样做过,但我有一个想法:


如果要在端点上运行查询,可以提取生成为查询字符串的URL,并保存该URL供以后使用,而不是直接在数据库上运行查询。由于OData已经有了一个很好的规范,您将能够从其他人的劳动中获益。

我会在这里使用一个特定于域的对象,即使确实存在这样的好东西——当您在LINQ中保存序列化查询和基础模型更改时会发生什么情况,从而使每个人保存的查询无效。在某种程度上,使用自己的数据格式应该可以避免这种情况。

我在PDC10上观看时写下了这篇文章。在1小时之后,他展示了如何为表达式树构建JSON序列化程序。您可能会发现这很有趣。

类似System.Data.Linq.CompiledQuery的内容,或者您指的是其他内容吗?这主意不错。所以我需要在我的服务器上构建一个OData端点,然后在我的网站上使用它来保存查询?就是这个主意吗?是的,就是这个主意。最妙的是,端点将是您想要的公共端点,您可以限制它只包含模型的一个子集。与我们使用LinqPad连接StackOverflow以发现有趣的指标的方法相同,您可以使某些客户或业务分析师能够灵活、可查询地查看您的数据。另外,通过创建额外的层,即使基础模型发生了更改,也可以确保OData端点的模型保持不变。我不是说这不是一个合理的担忧,但在我的情况下,我不必担心我的模型会发生变化。不是说你的模型,而是说序列化查询的工具(无论如何可能不存在)。我敢打赌,随着框架的发展,那里的任何生命都会随着内部结构的变化而改变。