【发布时间】:2011-11-10 20:31:25
【问题描述】:
我有一些来自数据库的数据,我无法轻易更改其架构。我想对其进行排序并将其绑定到基于数字 ID 的控件。问题是 API 将数字存储在字符串字段中,而不是作为 int 和 Linq barfs 在转换尝试。
myControl.DataSource = dataFromDB.OrderBy(o => int.Parse(o.StringHoldingAnInt));
LINQ to Entities 无法识别方法“Int32 Parse(System.String)”方法,并且该方法无法转换为存储表达式。
Convert.ToInt32 也不起作用。
LINQ to Entities 无法识别方法“Int32 ToInt32(System.String)”方法,并且该方法无法转换为存储表达式。
不适合作为字符串排序,因为值的长度不完全相同,并且会像这样对它们进行排序:1、10、11、2、3..
【问题讨论】:
-
有多少数据?在客户端排序是否可行?
-
您可以尝试用 '0' 填充字符串,以便它们都具有相同的长度......但我不确定 Linq 是否支持 String.PadLeft。
-
@dlev 数据库中有几百行,在我从问题中省略的 Where() 查询之后只有几十行。
-
@ThomasLevesque Linq-to-Entities 也不喜欢 String.PadLeft。
标签: c# linq linq-to-entities sql-order-by