Как сохранить результаты запроса LINQ To SQL в памяти - PullRequest
1 голос
/ 30 ноября 2009

Мне было интересно, как я могу извлечь часть таблицы, используя LINQ To SQL, в пространство памяти C #. Допустим, у меня есть база данных с тысячами записей и интерфейс GUI, который показывает одну запись за раз.

Когда пользователь нажимает кнопку следующей / предыдущей записи в графическом интерфейсе, тексту LINQ To SQL необходимо перейти и получить следующую запись - это занимает время.

Я хотел бы получить небольшой блок записей, скажем, последние n записей, и сохранить их в памяти, чтобы следующая и предыдущая кнопки реагировали намного быстрее.

Я попытался создать новое поле типа Table <vw_RawData> с именем Table_RawData, где vw_RawData - это таблица в моей базе данных, которая была создана Visual Studio при построении текста данных. Затем я попытался заполнить его (onLoad), используя

this._Table_Rawdata = (Table<vw_RawData>) 
from c 
in this._Db.vw_RawDatas 
where c.Date > DateTime.Now.AddMonths(-1) 
select c;

Это компилируется нормально, но во время выполнения я получаю следующую ошибку ... help ??

System.InvalidCastException: невозможно преобразовать объект типа 'System.Data.Linq.DataQuery 1[vw_RawData]' to type 'System.Data.Linq.Table 1 [vw_RawData]'.

1 Ответ

2 голосов
/ 30 ноября 2009

Вы можете легко получить блок записей, используя методы Take и Skip:

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

Это вернет 3 записи, начиная с записи № 6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...