【问题标题】:Keep LINQPad results for next query [closed]为下一个查询保留 LINQPad 结果 [关闭]
【发布时间】:2018-02-15 18:07:14
【问题描述】:

查询示例:

var booksFromPetr = Books.Where(x=> x.Author=="Petr Heteša");

假设这个查询需要很长时间才能完成执行,但是在它产生 10 本书之后..

现在我想处理这些书,但不想等待第一次查询再次...

不知何故我需要重新使用booksFromPeter变量...

我正在寻找类似 matlab 工作区的东西...

【问题讨论】:

  • 我很难理解你在问什么。您可以编辑您的问题以尝试澄清一下吗?
  • 不等待查询完成,你会得到 10 本书吗?
  • @ChrisDunaway 后者(问题已更新)。好的.. 但是 - 如何在不重新初始化的情况下使用booksFromPetr?如何在另一个 Linqpad 查询中访问内存变量?
  • @ChrisDunaway 我明白 ToList 在做什么......但你没有告诉我如何在另一个 LinqPad 执行中访问内存变量中的这个......?
  • 您可以在末尾添加 .Cache() 以将结果存储在 AppDomain 中。下次运行时,将从缓存中提取值,而不是重新运行查询。

标签: c# linqpad


【解决方案1】:

LINQPad 并不是真正为交互式计算而设计的 - 您需要添加额外的计算并重新运行整个查询。

但是,您可以做的一件事是使用

booksFromPetr.Dump("Books From Petr", true);

将结果输出到网格中,然后您可以将网格复制到电子表格中并保存为 CSV 或将其粘贴回 LINQPad 作为变量定义。

您也可以添加代码以将结果对象序列化到磁盘,然后将它们加载到另一个查询中。

或者将它们保存在工作表中的数据库中。

我很同情我有一个需要 2.5 小时才能运行的递归磁盘遍历,而我第一次运行它时,我没有意识到转换为网格会重新运行整个查询(如果您没有输入 @987654322 @ 最后,或类似的东西),所以当我使用“在网格中查看”菜单选项时,我不得不再等 2.5 小时才能将网格复制到电子表格中。

我还研究过一个模型,该模型使用超过 270MB 的 CSV 文件,并且只需要一分钟来计算行数,因此迭代查询以得出最终结果可能会很痛苦。幸运的是,CSV 驱动程序缓存了数据,所以大多数时候我的迭代速度更快。

如果有一种方法可以像计算器一样继续,那就太好了,但我认为很难设计和实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2012-06-22
    相关资源
    最近更新 更多