首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linqpad中已从数据库中获取的数据上运行查询(需要缓存)

在Linqpad中已从数据库中获取的数据上运行查询(需要缓存)
EN

Stack Overflow用户
提问于 2020-09-16 09:44:36
回答 1查看 441关注 0票数 3

我在Linqpad中执行一个长时间运行的查询,从我的数据库中获取一些数据。然后我需要分析这些数据。问题是,每次更改分析查询时,我都不想获取数据。

有什么最简单的方法可以像缓存一样将数据存储在某个地方,并且仍然具有用于分析的Linq功能?LinqPad是否为此目的提供了什么?我知道它可以导出为csv或xml文件,但需要更方便的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-17 02:23:47

LINQPad提供了Cache扩展方法和Util.Cache方法,用于在运行期间缓存内存中的数据。Cache扩展方法在IEnumerable<T>上工作,而Util.Cache方法在任何类型上工作。

下面是如何使用Cache扩展方法:

代码语言:javascript
运行
复制
var customers = Customers.Cache();              // Slow only on the first execution
customers.Where (c => c.Name == "Joe").Dump();

运行查询后,将第二行更改为如下所示:

代码语言:javascript
运行
复制
customers.Where (c => c.Name == "Mary").Dump();

当您重新执行查询时,LINQPad将不会从数据库中获取任何内容,因为customers将在第一次运行时缓存在内存中。

您还可以缓存数据的子集:

代码语言:javascript
运行
复制
var localCustomers = Customers.Where (c => c.Country == "US").Cache();
localCustomers.Where (c => c.Name == "Mary").Dump();

在LINQPad的内置教程和参考中有更多的例子。按Ctrl+,打开搜索对话框,单击Search 并搜索'Caching‘。

如果需要,可以通过查询菜单(Ctrl+Shift+F5)上的选项来清除缓存。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63917369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档