Есть ли в любом случае указывать на указанную c позицию строки в dbcontext? - PullRequest
0 голосов
/ 09 марта 2020

Я знаю, что dbcontext имеет FirstorDefault и LastorDefault, чтобы указывать на самую старую и самую новую созданную строку. Но мне нужно знать, как указать на другие или указать c строку. То, к чему я сейчас стремлюсь, это строка прямо над последним рядом. По умолчанию данные отображаются по времени их создания, и я намерен сохранить их при этом.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Сначала вам нужно , чтобы найти столбец для надежной сортировки. Предполагая, что порядок сортировки по умолчанию будет работать везде, где вам нужно where(expression of Index) then do (things) вызовет возможные проблемы.

Я предполагаю, что у вас есть столбец createDate для примера:

var secondToLastRecord = fooEntities.OrderByDescending(o => o.CreateDate).Skip(1).Take(1);

Это даст вам IQueryable из 1 записи со второй до последней записи.

Потому что самая новая запись будет в верхней части списка, который вы пропустите. Затем вы берете (выбираете) 2-ю запись. Затем вы можете создать нужный объект с помощью кнопок «Выбрать» или «Первый».

0 голосов
/ 09 марта 2020

Похоже, вы имеете в виду Linq, верно?

Один из способов - захватить все. Затем вызовите метод .ToList (). В этот момент вы можете использовать индекс в фигурных скобках, например [4] или [6] et c.

Пример: List cars = _context.Cars.ToList (); Car specificCar = cars [4];

Примечание. Вы получите низкую производительность, если в вашем DbContext будет большое количество строк в дБ, поскольку метод .ToList () сначала получает все строки.

Другим способом является использование метода .Find (), если существует некоторый уникальный идентификатор, например идентификатор базы данных, и т. Д. c.

Пример: Car specificCar = _context.Cars.Find (f => f.id == myUid); if (specificCar == null) return; // нужно проверить на null et c .....

Я думаю, если вы немного познакомитесь с выражениями Linq, вы обнаружите, что для этого есть несколько способов.

.SingleOrDefault (s => s.CarMake == make); .Where (w => w.CarMake == "Ferrari"). ToList () .. затем go оттуда. Et c.

...