【发布时间】:2015-12-03 09:00:12
【问题描述】:
我正在尝试使用他们的图像显示多个用户名所以,我有一个这样的 Json 操作方法:
public JsonResult GetUsers()
{
var ret = (from user in db.Users
orderby user.UserName
select new
{
UserName = user.UserName,
Pic = GetFileData(user.Id),
}).AsEnumerable();
return Json(ret, JsonRequestBehavior.AllowGet);
}
这是我的GetFileData 获取用户图像的方法:
public FileResult GetFileData(int Id)
{
var avatarImage = db.Files.SingleOrDefault(s => s.ApplicationUserId == Id);
return File(avatarImage.Content, avatarImage.ContentType);
}
这里,ApplicationUserId 是与 File 和 ApplicationUser 类相关的外键。
现在,当我运行查询时,我应该得到带有他们图片的用户名但我得到的是System.NotSupportedException。完整的错误消息是:
LINQ to Entities 无法识别该方法 'System.Web.Mvc.FileResult GetFileData(Int32)' 方法,和这个方法 无法翻译成商店表达式。
如何解决它。我已经看到很多与之相关的 stackoverflow 问题,但没有一个问题与 FileResult 相关。查看页面的代码在这里http://pastebin.com/AyrpGgEm
【问题讨论】:
-
那么您是否尝试过对其他问题应用相同的推理来解决您的情况?基本上,您几乎可以肯定只需要
AsEnumerable()before 选择,例如db.Users.OrderBy(user => user.UserName).AsEnumerable().Select(user => new { user.UserName, Pic = GetFileData(user.Id) }) -
您至少要在
select之前实现您的查询(例如.ToList()) -
我从未尝试将
FileResult序列化为 Json,但我并不感到惊讶不会工作。我怀疑您需要以 Base64 格式发送图像 -
@duke:鉴于它们与问题相关,它们应该在问题中。
-
但无论如何我们已经解决了问题中的问题 - 我们不知道新异常的堆栈跟踪是什么样的。您应该就该问题提出一个新问题。
标签: c# json asp.net-mvc entity-framework linq