如何解决这个问题?
这是我的代码:
DateTime dtinicio = new DateTime(); DateTime dtFim = new DateTime(); Int32 codStatus = 0; if(!string.IsNullOrEmpty(collection["txtDtinicial"])) dtinicio = Convert.ToDateTime(collection["txtDtinicial"]); if(!string.IsNullOrEmpty(collection["txtDtFinal"])) dtFim = Convert.ToDateTime(collection["txtDtFinal"]); if (!string.IsNullOrEmpty(collection["StatusCliente"])) Convert.ToInt32(collection["StatusCliente"]); var listCLientResult = (from c in db.tbClientes orderby c.id where (c.effdt >= dtinicio || string.IsNullOrEmpty(collection["txtDtinicial"]) && (c.effdt <= dtFim || string.IsNullOrEmpty(collection["txtDtFinal"])) && (c.cod_status_viagem == codStatus || string.IsNullOrEmpty(collection["StatusCliente"]))) select c); return View(listCLientResult);
我得到的错误是:
LINQ to Entities不能识别方法’System.String get_Item(System.String)’,它不能转换为存储库的表达式.
解决方法
对数据库执行的Linq查询在被执行之前被转换为sql;但是收集[“txtDtinicial”]不能转换为sql,因为没有等效的sql语法,无论如何,数据库无法访问集合.您需要首先将collection [“txtDtinicial”]提取到变量中,并且在查询中仅使用此变量.
这是我会做的:
DateTime dtinicio = DateTime.MinValue; DateTime dtFim = DateTime.MaxValue; Int32 codStatus = 0; if(!string.IsNullOrEmpty(collection["txtDtinicial"])) dtinicio = Convert.ToDateTime(collection["txtDtinicial"]); if(!string.IsNullOrEmpty(collection["txtDtFinal"])) dtFim = Convert.ToDateTime(collection["txtDtFinal"]); if (!string.IsNullOrEmpty(collection["StatusCliente"])) codStatus = Convert.ToInt32(collection["StatusCliente"]); var listCLientResult = (from c in db.tbClientes orderby c.id where (c.effdt >= dtinicio) && (c.effdt <= dtFim) && (c.cod_status_viagem == codStatus) select c); return View(listCLientResult);
原文地址:https://www.jb51.cc/csharp/93917.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。