C# 如何在内存中存储LINQ到SQL查询的结果

C# 如何在内存中存储LINQ到SQL查询的结果,c#,linq-to-sql,caching,C#,Linq To Sql,Caching,我想知道如何使用LINQtoSQL将表的一部分拉入C内存空间。假设我有一个包含数千条记录的数据库和一个每次显示一条记录的GUI界面 当用户单击GUI上的next/previous record按钮时,LINQ To SQL datacontext必须去获取下一条记录——这需要时间 我想做的是得到一小块记录,比如最后的n条记录,并将它们存储在内存中,这样“下一个”和“上一个”按钮的反应速度就会更快 我尝试的是创建一个名为Table_RawData的Table类型的新字段,其中vw_RawData是

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

当用户单击GUI上的next/previous record按钮时,LINQ To SQL datacontext必须去获取下一条记录——这需要时间

我想做的是得到一小块记录,比如最后的n条记录,并将它们存储在内存中,这样“下一个”和“上一个”按钮的反应速度就会更快

我尝试的是创建一个名为Table_RawData的Table类型的新字段,其中vw_RawData是我的数据库中的一个表,由VisualStudio在构建datacontext时创建。然后我试着在装载时使用

这是正常编译,但在运行时我得到以下错误。。。帮助

System.InvalidCastException:无法将类型为“System.Data.Linq.DataQuery1[vw_RawData]”的对象强制转换为类型为“System.Data.Linq.Table1[vw_RawData]”


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

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

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

如何根据日期使用这些记录。如果我想在X之前15天,也要在X之后15天?我认为这绝对是解决这个问题的正确方法。客户知道要检索的索引和记录数。这是在正确的时间找到正确数据的最简单方法。没有必要开始将这些东西存储在缓存或会话中。用户只需按需选择记录即可。如果这是一个多用户应用程序,答案可能会有所不同。不过,问题中没有给出任何指示。@Grant:假设X是DateTime:yourTable.Wheredt=>dt>=X.AddDays-15&&dt
yourTable.OrderBy(x => x.Date).Skip(5).Take(3)