LINQ to Entities does not recognize the method 'Double Parse(System.String)' cannot be translated into a store expression C# asp.net
本问题已经有最佳答案,请猛点这里访问。
我试着按编号订购部门,但由于部门编号在数据库中存储为字符串,所以我不能只使用按编号订购。我试图将其解析为float,但它不起作用。然后我试图把它解析为双精度。这也不管用。有什么建议吗?以下是我的代码。
1 2 3 4 5 6 7 8 | using (var db = new Context()) { var datasource = (from x in db.Departments orderby double.Parse(x.DepartmentNumber) select x).ToList(); lvData.DataSource = datasource; lvData.DataBind(); } |
感谢您的回答,我做了以下操作,但结果并不完全正确。
1 | var datasource = (from x in db.Departments orderby x.DepartmentNumber select x).ToList().OrderBy(Department => float.Parse(Department.DepartmentNumber)); |
号
。
一种解决方案是:
1 2 3 | var datasource = db.Departments .ToList() .OrderBy(department => double.Parse(department.DepartmentNumber)); |
从应用程序内存中的数据库中获取所有数据(通过调用
下面的查询不起作用的原因:
1 2 3 | var datasource = (from x in db.Departments orderby double.Parse(x.DepartmentNumber) select x).ToList(); |
号
Double.Parse无法转换为SQL中的等效函数,然后将整个SQL查询提交到数据库执行。
实际上,以下解决了问题,并提供了所需的结果:
1 | var datasource = (from x in db.Departments orderby x.DepartmentNumber select x).ToList().OrderBy(Department => Convert.ToDouble(Department.DepartmentNumber, System.Globalization.CultureInfo.InvariantCulture)); |
。