You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LINQPad中保留查询结果供后续复用?类似Matlab工作区

在LINQPad中复用查询结果(类似Matlab工作区)

嘿,这个需求我太懂了!谁也不想反复等慢查询跑完对吧?LINQPad其实自带了类似Matlab工作区的变量持久化功能,刚好能解决你的问题,下面给你两种实用的方法:

方法一:用会话状态(Session State)临时保存

这个方法适合同窗口内复用变量,数据会保留到你关闭LINQPad窗口为止,操作超简单:

  • 首先确保你的查询模式是「C# Statement(s)」或者「C# Program」(如果是默认的Expression模式,切换一下就行,在查询窗口顶部的下拉菜单里)。
  • 第一次执行慢查询时,把结果存入Session对象:
    // 只需要跑一次的慢查询
    var booksFromPeter = /* 你的耗时LINQ查询代码 */;
    // 把结果存入会话
    Session["PeterBooks"] = booksFromPeter;
    
  • 之后要复用的时候,直接从Session里取出即可,不用再跑查询:
    // 从会话中获取缓存的图书数据
    var cachedBooks = Session["PeterBooks"] as List<Book>; // 替换成你的实体类型
    if (cachedBooks != null)
    {
        // 在这里放心操作cachedBooks就行,比如筛选、统计
        var expensiveBooks = cachedBooks.Where(b => b.Price > 50).ToList();
        expensiveBooks.Dump(); // LINQPad的Dump方法用来展示结果
    }
    

方法二:用Util.Cache做持久化缓存

如果需要跨窗口甚至重启LINQPad后还能复用,那就用LINQPad内置的Util.Cache工具:

  • 只需要一行代码,第一次执行时会跑查询并缓存结果,之后直接读取缓存:
    // 缓存键"PeterBooks_Cache"要保证唯一,避免和其他缓存冲突
    var booksFromPeter = Util.Cache(() => /* 你的耗时LINQ查询代码 */, "PeterBooks_Cache");
    
  • 如果之后需要更新缓存(比如数据源变了),可以手动清除指定缓存:
    Util.ClearCache("PeterBooks_Cache");
    

这两种方法我平时处理大数据查询的时候经常用,省了超多重复等待的时间,完全满足你的需求~

内容的提问来源于stack exchange,提问作者Alamakanambra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:27:11