我在 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();
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) 终止进程来清除缓存。