C# 使用Linq查询从数据库检索图像时出错

C# 使用Linq查询从数据库检索图像时出错,c#,C#,我使用以下代码通过linq查询从数据库检索图像 但我得到的错误是 LINQ to Entities无法识别方法“System.String ToString(System.String)”方法,并且无法将此方法转换为存储表达式。 出现了用//编码的错误行 public void ProcessRequest (HttpContext context) { HttpRequest req = context.Request; MembershipUser us

我使用以下代码通过linq查询从数据库检索图像 但我得到的错误是

LINQ to Entities无法识别方法“System.String ToString(System.String)”方法,并且无法将此方法转换为存储表达式。

出现了用//编码的错误行

public void ProcessRequest (HttpContext context) {

        HttpRequest req = context.Request;


        MembershipUser user_id1 = Membership.GetUser();
        string user_id = user_id1.ProviderUserKey.ToString();      

        // string categoryID =Convert.ToInt32("4");// req.QueryString["CategoryID"].ToString();
        // Get information about the specified category          
        TMSEntities db = new TMSEntities();
        //get User ID From Login


        var category = (from data in db.Register1_db
                       where data.User_ID == Convert.ToString(user_id)
                       select data.Student_Photo);

        //error occurred.
        int len = category.First().Length;

        // Output the binary data          
        // But first we need to strip out the OLE header          
        int OleHeaderLength = 78;
        int strippedImageLength = len - OleHeaderLength;
        byte[] imagdata = new byte[strippedImageLength];          
        Array.Copy(category.First().ToArray(), OleHeaderLength, imagdata, 0, strippedImageLength);          
        if ((imagdata) != null)          
        {              
            MemoryStream m = new MemoryStream(imagdata);              
            System.Drawing.Image image = System.Drawing.Image.FromStream(m);              
            image.Save(context.Response.OutputStream, ImageFormat.Jpeg);          
        }




}




public bool IsReusable {
    get {
        return false;
    }
}

查看给出错误的行

var category = (from data in db.Register1_db
                where data.User_ID == Convert.ToString(user_id)
                select data.Student_Photo);
Convert.ToString(用户id)
不是可以在Linq to实体中使用的表达式

当查看您的代码时,我可以看到
user\u id
已经是一个字符串,不需要转换,因此这应该可以更好地工作

var category = (from data in db.Register1_db
                where data.User_ID == user_id
                select data.Student_Photo);
这一条应该有效:

var string_id = Convert.ToString(user_id);
var category = (from data in db.Register1_db
                       where data.User_ID == string_id
                       select data.Student_Photo);
LINQ创建表达式树,因此不会调用
Convert.ToString
,但必须由LINQ提供程序进行解释