如何在内存中存储LINQ To SQL查询的结果

时间:2009-11-30 03:37:33

标签: c# linq-to-sql caching

我想知道如何使用LINQ To SQL将一部分表拉入C#内存空间。假设我有一个包含数千个记录的数据库和一个一次显示一条记录的GUI界面。

当用户点击GUI上的下一个/上一个记录按钮时,LINQ To SQL datacontext必须去获取下一条记录 - 这需要时间。

我想要做的是获取一小段记录,说最后n条记录并将它们存储在内存中,以便下一个和上一个按钮反应更快。

我尝试过创建一个名为Table <vw_RawData>的{​​{1}}类型的新字段,其中vw_RawData是我数据库中的一个表,由Visual Studio在构建datacontext时创建。然后我尝试使用

填充它(Table_RawData
onLoad

这是编译好的,但在运行时我得到以下错误......帮助??

  

System.InvalidCastException:无法转换类型为'System.Data.Linq.DataQuery this._Table_Rawdata = (Table<vw_RawData>) from c in this._Db.vw_RawDatas where c.Date > DateTime.Now.AddMonths(-1) select c; 1 [vw_RawData]'的对象。

1 个答案:

答案 0 :(得分:2)

您可以使用Take和Skip方法轻松获取记录块:

yourTable.OrderBy(x => x.Date).Skip(5).Take(3)

这将从记录号6开始返回3条记录。