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

Running queries on already fetched data from database in Linqpad (cache needed)

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

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

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();

运行查询后,将第二行更改为如下内容:

customers.Where (c => c.Name == "Mary").Dump();

当您 re-execute 查询时,LINQPad 不会从数据库中获取任何内容,因为 customers 将从第一个 运行.

开始缓存在内存中

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

var localCustomers = Customers.Where (c => c.Country == "US").Cache();
localCustomers.Where (c => c.Name == "Mary").Dump();

LINQPad 的 built-in 教程和参考中有更多示例。按 Ctrl+,调出搜索对话框,单击 Search Samples 并搜索 'Caching'.

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