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

Ary*_*ian 3 sql linqpad

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

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

Joe*_*ari 5

LINQPad 提供了一种Cache扩展方法和一种Util.Cache在运行之间在内存中缓存数据的方法。该Cache扩展方法适用于IEnumerable<T>Util.Cache方法适用于任何类型的。

以下是使用Cache扩展方法的方法:

var customers = Customers.Cache();              // Slow only on the first execution
customers.Where (c => c.Name == "Joe").Dump();
Run Code Online (Sandbox Code Playgroud)

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

customers.Where (c => c.Name == "Mary").Dump();
Run Code Online (Sandbox Code Playgroud)

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

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

var localCustomers = Customers.Where (c => c.Country == "US").Cache();
localCustomers.Where (c => c.Name == "Mary").Dump();
Run Code Online (Sandbox Code Playgroud)

LINQPad 的内置教程和参考中有更多示例。按 Ctrl+,打开搜索对话框,单击“搜索示例”并搜索“缓存”。

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