【发布时间】:2010-03-09 15:17:22
【问题描述】:
我正在为我的公司编写一个应用程序,目前正在开发搜索功能。当用户搜索项目时,我想显示最高版本(存储在数据库中)。
问题是,版本存储为字符串而不是 int,当我对结果执行 OrderBy(q=>q.Version) 时,它们会返回
1
10
11
2
3
...
显然 2 在 10 之前。
有没有办法让我将版本转换为整数,或者那里有一个简单的 IComparer?到目前为止,我找不到任何实质性的东西。
我试过这样做:
var items = (from r in results
select r).OrderBy(q => Int32.Parse(q.Version));
这可以编译但不起作用。
【问题讨论】:
-
我会在你的问题结束时准确地建议你做了什么(按
q => int.Parse(q.Version)排序); “不起作用”是什么意思? -
也许你的问题在这里:
(q => Int32.Parse(q.Version))。是否应该只是(q => Int32.Parse(q))以与下面的工作版本保持一致? -
查看枚举结果时收到此错误消息:“方法 'Int32 Parse(System.String)' 没有支持的 SQL 转换”
-
@MusiGenesis:达西正在过滤具有
Version属性的某个对象的集合;int.Parse不适用。 -
啊,所以您使用的是 LINQ to SQL...下面的所有答案都提供了在简单集合(例如数组)上调用
OrderBy的方法。
标签: c# asp.net-mvc linq linq-to-sql sql-order-by