Возврат последней вставленной записи - PullRequest
0 голосов
/ 17 февраля 2019

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

проверьте ссылку на изображение ниже

Это вывод моего результата

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select new
                         {
                             p.Name
                         }).First();

Ответы [ 4 ]

0 голосов
/ 17 февраля 2019

.First () генерирует исключение, когда ничего не возвращается, а FirstOrDefault () возвращает ноль

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select p).FirstOrDefault();
0 голосов
/ 17 февраля 2019

Если вы хотите запросить все столбцы:

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select p).First();

Это равно sql:

SELECT TOP (1) *
FROM [Products] 
ORDER BY ProductID DESC

Если вы хотите сохранить все столбцы в переменную C #, то ее можно использовать какстрогий тип позже.

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select p).First();
Console.WriteLine(query.Name);
Console.WriteLine(query.SomeCloumn);

Если вам нужен только столбец Имя и строгий тип, тогда вам не нужен новый {}

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select p.Name ).First();

Это равно sql:

SELECT TOP (1) Name
FROM [Products] 
ORDER BY ProductID DESC
0 голосов
/ 17 февраля 2019

Вы создаете анонимный объект в своем запросе linq, если вам нужно только имя, тогда вам нужно просто спроецировать свойство name без выражения new { }, которое будет просто значением string, как:

string lastInsertedName = (from p in context.Products
                            orderby p.ProductID descending
                         select p.name).First();

и помните, что First() сгенерирует исключение во время выполнения, если в таблице Products не найдена строка, для которой у нас есть FirstOrDefault(), которая вернет null в случае, еслинет строки:

string lastInsertedName = (from p in context.Products
                            orderby p.ProductID descending
                         select p.name).FirstOrDefault();

В вашем текущем примере кода вам потребуется доступ к свойству name вашего анонимного объекта, и анонимный объект на самом деле не нужен в текущем сценарии, простой string достаточно, но просто чтобы проиллюстрировать, как это сделать с помощью предоставленных битов кода, вот оно:

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select new
                         {
                             p.Name
                         }).First();

string lastInsertedName = query.name;

На всякий случай, если строки не существует:

var query = (from p in context.Products
                         orderby p.ProductID descending
                         select new
                         {
                             p.Name
                         }).FirstOrDefault();

string lastInsertedName = query?.name;

Надеюсьпомогает.

0 голосов
/ 17 февраля 2019

Вы выбираете новый объект с одним свойством.Так что query в данном случае является анонимным объектом.Теперь он конвертирует новый объект в строку, отсюда и скобки.

Если вы хотите отобразить только поле имени, вам нужно вывести query.Name На метку.

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