1

我的数据库表看起来像这样

在此处输入图像描述

我试图在 CRUD 类文件中检索 FileURL,如下所示:

  public IList<string> GetSorted(int listAct)
        {
          IList<Model.story> lstImages = context.stories.ToList();
          return lstImages.Where(c => c.ActivityID == listAct)
                          .Select( a => a.FileURL)
                          .ToList();
        }

我做对了吗?(对此不熟悉)

然后在我的 aspx 中,我尝试显示这样的值;

 protected void btnSort_Click1(object sender, EventArgs e)
    {
        if (dropListActivity.SelectedIndex > 0)// drop down list
        {
                  string imgList = daoStory.GetSorted(Convert.ToInt32(dropListActivity.SelectedItem.Value)).ToString();

            Response.Write(imgList);

        } 
    }

基本上下拉列表仅显示activityID 1或2,当我选择1并单击排序按钮时,它将显示'1'的FileURL,如果我选择2,它将显示'2'的FileURL,依此类推上面的数据库表。但是,它现在显示System.Collections.Generic.List`1[System.String]而不是 FileURL,我想显示数据库表中所述的 FileURL,请帮助谢谢。

4

2 回答 2

2

首先,调用ToList将导致从数据库中检索并处理所有记录。当您只需要一条记录时,这是一种相当大的资源浪费。我建议像这样编写你的 DAO 方法:

public string GetFileUrl(int actId)
{
    return context.stories.First(c => c.ActivityID == actId).FileURL;
}

然后我想你想像这样使用它:

protected void btnSort_Click1(object sender, EventArgs e)
{
    if (dropListActivity.SelectedIndex > 0)// drop down list
    {
        var actId = Convert.ToInt32(dropListActivity.SelectedItem.Value);
        var imageUrl = daoStory.GetFileUrl(actId);

        Response.Write(imageUrl);
    } 
}

此方法假定FileUrl每个ActivityId. 如果不是这种情况,您可以轻松地修改 DAO 代码以返回 aIEnumerable<string>并使用Where而不是First,但是问题中没有足够的信息让我弄清楚按钮单击处理程序应该对结果做什么。

于 2013-06-13T02:27:58.773 回答
0

您从 sort 方法传回一个列表,但在后面的代码中将其转换为字符串。您必须以某种方式处理列表并获取您想要的任何元素的值。

于 2013-06-13T02:30:09.247 回答