为什么无法在标签中获取查询值?

时间:2013-11-20 08:40:14

标签: c# asp.net .net sql linq

我想从我的数据库中获取一个值并将其设置为标签文本。

当我从下拉列表中选择某个内容时,它会传递一个我认为是type = 1

的值
    protected void ddl_project_name_SelectedIndexChanged(object sender, EventArgs e)
    {
     int type = Convert.ToInt16(ddl_project_name.SelectedValue);
     if (ddl_project_name.SelectedValue != "") //type =1
      {
        lbl_batch_status.Text = mydal.lbl_batch_status(type).ToString();
       }
      }

   public string lbl_batch_status( int type)
   {
        var result = from p in db.tbl_projects
                 where p.id == type
                 select p.project_status;
            return result.ToString();

}

但我只是得到了查询。为什么我没有得到结果值?

请帮帮我。感谢。

2 个答案:

答案 0 :(得分:1)

我不确定我是否抓住了你的意思...... result是枚举,然后ToString()不会将其值加入有意义的字符串。将您的代码更改为:

public string lbl_batch_status( int type)
{
    var result = from p in db.tbl_projects
                 where p.id == type
                 select p.project_status;

    return String.Join(" ", result);
}

我假设project_status的类型为string,如果它没有改变:

public string lbl_batch_status( int type)
{
    var result = from p in db.tbl_projects
                 where p.id == type && p.project_status != null
                 select p.project_status.ToString();

    return String.Join(" ", result);
}

请注意我假设您需要一个按空格连接的列表(根据您的需要更改第一个String.Join参数)。如果您确定列表中只有一个元素,请考虑使用First()Single()。(参见MSDN)。

答案 1 :(得分:0)

您可以使用下面提到的方法:

public string lbl_batch_status( int type)
       {
            var result = db.tbl_projects
                         .Where(p => p.id == type)
                         .Select(p => p.project_status)
                         .FirstOrDefaulr();

            return result == null ? string.Empty : result;
     }