2012-10-06 16 views
0

以下代码我用于通过LINQ查询 来检索数据库的图像,但我得到错误等出错期间从数据库使用LINQ查询检索图像

LINQ实体无法识别方法“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; 
    } 
} 

回答

0

这一个应该工作:

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提供程序进行解释。

1

看着给出错误的行;

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

Convert.ToString(user_id)不是可以在Linq to Entities中使用的表达式。

当你的代码看,我可以看到,user_id已经是一个字符串,不需要转换,所以这应该更好地工作;

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