SQL и C # извлекают одну запись из базы данных - PullRequest
2 голосов
/ 01 апреля 2012

У меня есть веб-страница с выпадающим списком книг. Эти книги хранятся на сервере SQL. Используя страницы MVC и aspx, я пытаюсь выяснить, как получить информацию о книге так, чтобы, когда пользователь выбирает книгу, он превышал цену книги. Я новичок в SQL Server и VAR заявления.

  1. Я могу получить название книги с веб-страницы и отправить его на мой контроллер
  2. В моей модели я пытаюсь получить эти данные, вот моя мысль. Я хочу получить цену и сохранить в строку. Но единственный способ получить информацию - использовать выражение var.

такой, что

var price = from p in BooksDB.Price
 where p.Book_Name==bookName
    select new {p.Book_Price}

но как мне получить это значение и сохранить его в строку на основе Books_Name, которую я получил из выпадающего списка

кстати, мой стол выглядит так

Id_Num   Book_Name    Book_Price
  1       Pro C#       29.99
  2       Beg C++      10.99

Ответы [ 3 ]

3 голосов
/ 01 апреля 2012

Сначала исправление терминологии.

var - это просто ключевое слово, которое компилятор позволяет использовать для подстановки типа.Во время компиляции компилятор выяснит, какой тип основан на использовании.

var myString = "hihihi";
string myString = "hihihi";

Оператор var не имеет ничего общего с доступом к базе данных, хотя он был добавлен, чтобы облегчить нам использование LINQЛенивые разработчики.

Вместо этого вы создаете запрос LINQ to SQL.Я немного его изменил (вам не нужно создавать анонимный объект).После создания оператора необходимо выполнить его, вызвав «ToList (), First () или FirstOrDefault () и т. Д.»

LINQ обычно использует отложенную или отложенную оценку для запросов и не выполняется доВы запускаете исполнение.

var price = from p in BooksDB.Price
            where p.Book_Name==bookName
            select p.Book_Price;

//assuming Book_Price is stored as a string datatype.
string bookPrice = price.FirstOrDefault();
//otherwise
string bookPrice = (price.FirstOrDefault() ?? "").ToString();

if(!String.IsNullOrEmpty(bookPrice))
{
    //do something with the string.
}
2 голосов
/ 01 апреля 2012

Если я правильно понимаю, что-то вроде ниже должно работать.

var record = BooksDB.Price.FirstOrDefault(r => r.Book_Name == bookName);

Если record не является null на этом этапе, тогда record.Book_Price должен содержать данные, которые вы ищете (не считая двусмысленности в базе данных.)

0 голосов
/ 01 апреля 2012

Вместо select new {p.Book_Price} используйте что-то вроде select p.Book_Price. Вы можете добавить .ToString() в конец, чтобы заставить его выступать в виде строки, а не типа данных из таблицы.

Вы также захотите обернуть весь оператор LINQ в () и добавить .FirstOrDefault(), чтобы получить только одно значение. Часть «OrDefault» защищает вас от исключения, когда результат устанавливает нас пустыми.

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