0

好的,我将以我是 c# 新手和使用 WebMatrix 的事实作为开头。我正在尝试将数据库调用作为页面的一部分并获取特定于“类别”的信息,然后使用数据库中的该数据将信息放在页面上 - 例如,将页面标题设置为来自的 CategoryTitle数据库。下面是我的示例代码,我知道我只是不理解某些东西,但基本上我从数据库中获取数据(其中包括一堆关于类别的东西,例如;id、标题、描述等)到 IEnumerable(我不完全理解那是什么)然后我只想引用 CategoryTitle (这是数据库和结果集中的字段名称。当我使用下面的代码时,我收到以下错误“编译器错误消息: CS1061:'系统。

我知道“categoryData.CategoryTitle;” 部分是错误的,但我该怎么做?我可以使用foreach循环并执行“foreach(categoryData中的var row)”然后说“row.CategoryData”使其工作,但我觉得我不应该这样做,因为它只有一个记录结果放。

@{

    Layout = "~/layouts/_layout.cshtml";

    var categoryID = 1;
    IEnumerable<dynamic> categoryData = null;

    var db = Database.Open("Connection"); 
    categoryData = db.Query("exec sp_get_Category @CategoryID=" + categoryID);

    Page.Title = categoryData.CategoryTitle;

}
4

1 回答 1

0

您必须只取出一行,否则您正试图从集合中取出一个属性。尝试

Page.Title = categoryData.First().CategoryTitle;

它只会拉出第一个结果,但如果没有结果,你会得到一个例外。或者,您可以执行FirstOrDefault()which 将首先返回或返回 null;然后你可以做一个空检查。

var firstValue = categoryData.FirstOrDefault();
if(firstValue == null)
{
    Page.Title = "Some default title":
}
else
{
    Page.Title = firstValue;
}
于 2012-11-06T00:40:00.833 回答