2012-05-10 43 views
0

我的查询返回一个错误,说“对象必须实现IConvertible”。错误发生在.FirstOrDefault()行上。我试图从数据库中提取一个blob镜像并将其返回给ajax调用。我一直在寻找2天的答案,找不到任何东西。Linq查询错误从数据库中抽取blob图像...对象必须实现IConvertible

 [HttpGet] 
     //[Authorize] 
     public ActionResult getChartInfo(string ticker) 
     { 
      var db = new MarketSymmetricsSite.msxxdbDB(); 

      System.Linq.IQueryable<string> gQuery = (System.Linq.IQueryable<string>)(from mg in db.Markets where mg.tickerID == ticker select mg.pGraph); 
      string mGraph = gQuery.FirstOrDefault(); ; 
      byte[] test = new byte[mGraph.Length]; 
      char[] CharArray = mGraph.ToCharArray(); 

      byte[] ByteArray = new byte[CharArray.Length]; 

      for (int i = 0; i < CharArray.Length; i++) 
      { 

       ByteArray[i] = Convert.ToByte(CharArray); 

      } 

      return Json(ByteArray, JsonRequestBehavior.AllowGet); 

     } 
+1

有你看这个资源: http://stackoverflow.com/questions/1266223/retrieving-an-image-from-database-with-linq-to-sql –

+0

我没有看到一个和它没有为我工作。 – user1361962

+0

@ user1361962尝试更新示例 –

回答

0

为了解决这一切我所要做的就是从BLOB更改数据库中的数据类型二进制和瞧。希望这可以帮助任何需要它的人。

+0

恭喜您修复!如果可以,请一定要把你的答案标记为“接受”(带有绿色的选中标记),以便其他人能够从你的成功中学习。干杯〜 –

0

你需要使用VAR,然后从二进制转换图像,它的图像文件现在

var img = (from mg in db.Markets where mg.tickerID == ticker select mg.pGraph).FirstOrDefault(); 
va rconvertedimage = ByteArrayToImage(img.Image.ToArray()); 
+0

我仍然得到相同的错误与此:( – user1361962

+0

@ user1361962确定它是一个图像二进制不是字符串 –

+0

应该是..它最初是一个JPG图像存储在MySQL数据库中作为一个blob类型 – user1361962

相关问题