控制器中有一个过滤内容的方法。
[HttpPost]
public ActionResult Search (string[] jsonString)
{
IQueryable <UploadedFile> res = Context.UploadedFiles;
if (!string.IsNullOrEmpty(jsonString[0]))
{
res = res.Where(x => x.FileTitle.Contains(jsonString[0]));
}
return View("UploadFilesView", res.ToList());
}
一个 json 字符串到达方法中,然后将其过滤并提供给 View。在上面的代码中,该方法返回 500(内部服务器错误)。
如果我们换行
res = res.Where(x => x.FileTitle.Contains(jsonString[0]));
在
var buffer = jsonString[0];
res = res.Where(x => x.FileTitle.Contains(buffer));
然后一切正常。告诉我这是为什么?
在您提供的屏幕截图中,有一条错误消息指出 Linq to Entity 不支持索引访问。我认为,这与 ExpressionBuilder 不知道如何将其翻译成您正在使用的 DBMS 的语言有关(是的,不仅您使用 EF 很重要,而且使用哪个提供程序也很重要)。
因此,要解决该问题,您需要将所需的字符串放入局部变量中。