LINQ to Entities 无法识别方法“Double Parse(System.String)”无法转换为存储表达式 C# asp.net

Min*_*dan 1 c# sql linq asp.net

我尝试按编号订购部门,但由于部门编号作为字符串存储在数据库中,我不能只使用按编号订购。我尝试将其解析为浮点数,但没有奏效。然后我尝试将其解析为 Double。那也行不通。有什么建议?以下是我的代码。

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();
}
Run Code Online (Sandbox Code Playgroud)

感谢您的回答,我做了以下操作,但结果并不完全正确。

 var datasource = (from x in db.Departments orderby x.DepartmentNumber select x).ToList().OrderBy(Department => float.Parse(Department.DepartmentNumber));
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

Chr*_*tos 5

一种解决方案如下:

var datasource = db.Departments 
                   .ToList()
                   .OrderBy(department => double.Parse(department.DepartmentNumber));
Run Code Online (Sandbox Code Playgroud)

您从应用程序内存中的数据库中获取所有数据(通过调用ToList,它请求立即执行查询。)然后在内存中进行排序。

下面的查询不起作用的原因:

var datasource = (from x in db.Departments 
                  orderby double.Parse(x.DepartmentNumber) 
                  select x).ToList();
Run Code Online (Sandbox Code Playgroud)

事实是double.Parse 不能在sql中转换为等价的函数,然后将整个sql查询提交到数据库执行。