我有一个带有下拉列表的网页,其中包含一系列图书。这些书存储在sql服务器上。使用MVC和aspx页面,我试图弄清楚如何检索有关书籍的信息,以便当用户选择书籍时它通过书籍的价格。我是sql sever和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
答案 0 :(得分:3)
首先进行术语修正。
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.
}
答案 1 :(得分:2)
如果我理解正确,下面的内容应该有用。
var record = BooksDB.Price.FirstOrDefault(r => r.Book_Name == bookName);
如果此时record
不是null
,则record.Book_Price
应包含您要查找的数据(不考虑数据库中的歧义。)
答案 2 :(得分:0)
而不是select new {p.Book_Price}
,请使用select p.Book_Price
之类的内容。您可以在末尾添加.ToString()
以强制它作为String而不是表中的数据类型出现。
您还希望将整个LINQ语句包装在()中并附加.FirstOrDefault()
以获取一个值。当结果设置为空时,“OrDefault”部分可以保护您免受异常的影响。