Asp.net 无效参数

Asp.net 无效参数,asp.net,linq,Asp.net,Linq,为了从数据库中检索文件,我在下载efile时使用了下面的linq查询,但在函数下载(efile)中存在无效参数的问题。 我见过一些使用datatable进行下载的地方。我喜欢在不使用datatable的情况下这样做,但我不知道怎么做 the fields of table tblfile is like below. fileid(int), FileName (varchar(50)), ContentType (varchar(50)), Data varbinary(MAX) 有什么问

为了从数据库中检索文件,我在下载efile时使用了下面的linq查询,但在函数下载(efile)中存在无效参数的问题。 我见过一些使用datatable进行下载的地方。我喜欢在不使用datatable的情况下这样做,但我不知道怎么做

the fields of table tblfile is like below.

fileid(int), FileName (varchar(50)), ContentType (varchar(50)), Data varbinary(MAX)
有什么问题请帮忙

protected void LinkButton1_Command(object sender, CommandEventArgs e)
{
    if (e.CommandName == "Download")
    {
       _DataContext = new EDMSDataContext();
       //you can get your command argument values as follows
       string FileId = e.CommandArgument.ToString();
       int _FileId = Convert.ToInt32(FileId);
       var Efile = from ef in _DataContext.tblFiles
                   where ef.FileId == _FileId
                   select ef;
       if (Efile != null)
       {
           download(Efile);
       }
    }
}

private void download ( tblFile Efile)
{
    Byte[] bytes = (Byte[])Efile.Data.ToArray();
    Response.Buffer = true;
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = Efile.ContentType.ToString();
    Response.AddHeader("content-disposition", "attachment;filename="
        + Efile.FileName.ToString());
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();
}

该方法正在接受“tblFile”对象的参数,您正在传递集合。将Single()添加到linq查询表达式中,它就会得到解析

   var Efile = (from ef in _DataContext.tblFiles
               where ef.FileId == _FileId
               select ef).Single();

或者,也可以使用
First()
FirstOrDefault()
SingleOrDefault()

确保.dbml文件具有表的属性tblfile,如您所需和此处所述。并使用下面的代码重试数据库中的数据

tblFile data = _DataContext.tblFile.SingleOrDefault(s=>s.fileid  ==  _FileId);

这将根据您的需要工作。

谢谢。错误已删除,但下载功能似乎不起作用,无法下载