我的数据库表如下
我试图在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并单击sort按钮时,它将显示fileurl'1',如果我选择2,它将显示fileurl'2',依此类推。但是,现在它显示的是system.collections.generic.list`1[system.string]而不是fileurl,我想显示数据库表中所述的fileurl,请帮助我们,谢谢。

最佳答案

首先,调用ToList将导致从数据库检索并处理所有记录。当你只需要一张唱片的时候,这是一个很大的资源浪费。我建议你这样写道法:

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代码以返回IEnumerable<string>并使用Where而不是First,但是问题中没有足够的信息让我弄清楚按钮单击处理程序应该如何处理结果。

08-06 23:57