c# - 如何在 Linq 查询的字符串字段中按整数排序

标签 c# linq linq-to-entities sql-order-by

<分区>

我有一些数据来自数据库,我无法轻易更改其架构。我想对其进行排序并将其绑定(bind)到基于数字 ID 的控件。问题是 API 将数字存储在字符串字段中,而不是作为 int 和 Linq barfs 进行转换尝试。

myControl.DataSource = dataFromDB.OrderBy(o => int.Parse(o.StringHoldingAnInt));

LINQ to Entities does not recognize the method 'Int32 Parse(System.String)' method, and this method cannot be translated into a store expression.

Convert.ToInt32 也不起作用。

LINQ to Entities does not recognize the method 'Int32 ToInt32(System.String)' method, and this method cannot be translated into a store expression.

作为字符串排序是不合适的,因为值的长度并不完全相同,它会像这样对它们进行排序:1, 10, 11, 2, 3..

最佳答案

这不会那么有效,因为您没有利用数据库查询来过滤结果,但这基本上会查询所有数据,然后在客户端进行过滤。

myControl.DataSource = dataFromDB.ToList().OrderBy(o => int.Parse(o.StringHoldingAnInt));

关于c# - 如何在 Linq 查询的字符串字段中按整数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8085880/

相关文章:

c# - 将来自不同 MEF 插件的 ToolStripMenuItem 合并到一个 MenuStrip 中

c# - Metro 风格应用程序的发布问题

c# - 登录表单问题

c# - 在 Linq-to-Entities 查询表达式中使用元组或其他一些复杂类型

linq - 想要一个查询在 Linq 查询中按变量排序

c# - 返回模型但它为空

c# - 如何将跟踪/异常数据从控制台 C# 应用程序获取到 Application Insights

c# - 如何将 List<string> 转换为 IEnumerator<string>

c# - Linq to XML - 根据 if 语句设置 Xelement 值

entity-framework - EF代码优先CTP5,对多对多表使用包含方法