我的数据库中有一个表,其中一列是图像数据类型。我可以将Image存储在数据库中,但我无法检索它。我想为每个登录用户检索Image。我用了这段代码:
public ActionResult ShowImage()
{
var userID = GetUserID();
var advert = from ad in StoreDb.Ads where ad.UserId == userID select ad.AdImage;
return File(advert, "Image");
}
但得到了这个错误:
错误2参数1:无法从'System.Linq.IQueryable'转换为'string'C:\ Users \ Tena \ Documents \ Visual Studio 2010 \ Projects \ MvcApplication6 \ MvcApplication6 \ Controllers \ Default3Controller.cs 92 25 MvcApplication6 < / p>
问题在于广告在
中System.Linq.IQueryable<>byte[]
格式但文件需要byte[]
格式。我现在应该怎么做?任何答案都有帮助。
由于
答案 0 :(得分:2)
我不确定,这是解决这个问题的方法。我通常实现一个自定义的http处理程序,它需要一些id(例如userid)连接到数据库,获取图片并返回具有正确mime类型的图片的字节流。
在“视图”中,我只使用http处理程序的url作为图像源创建一个图像标记。
答案 1 :(得分:2)
问题是LINQ查询没有被评估,并且理论上的查询理论上可以返回多个结果(因此它是IQueryable
)。
事实上,查询看起来不正确,因为可能会为特定用户提供多个广告,我不希望在任何情况下根据用户存储广告,但我什么都不知道关于你的数据结构,所以我只是试着帮助你使查询工作,你可以稍后改进它。
尝试更改此行:
var advert = from ad in StoreDb.Ads where ad.UserId == userID select ad.AdImage;
到此:
var advert = (from ad in StoreDb.Ads where ad.UserId == userID select ad.AdImage).FirstOrDefault();
我可以提供有关如何执行此操作的其他提示,但请先尝试一下,看看会发生什么。