【发布时间】:2013-06-05 18:52:54
【问题描述】:
在我的 C# 应用程序中,我有一个对象集合,这些对象的 int Order 属性范围从 1 到 n。
当我这样做时:
var listings = session.Query<Listing>().Where(x => !x.IsDeleted && x.CategoryId == category.Id && x.WorkflowStatus == WorkflowStatus.Published).OrderBy(x => x.Order);
我得到了一系列列表,但不是 100% 的顺序正确。按照目前的顺序:
0, 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 28, 29, 3, 30, 31, 32, 33, 4 ....
知道为什么OrderBy 不能完全按照应有的方式工作吗?
【问题讨论】:
-
看起来由于某种原因将它们作为字符串
-
什么是字符串?
-
它认为
Order属性是一个字符串而不是一个int,如果它们是文本,这就是它的排序方式。 -
啊,是的,我明白你的意思了。知道如何解决这个问题吗?
-
您可以尝试
OrderBy(x => (int)x.Order);,但我不确定如果它应该存储为 int,为什么它会以字符串形式返回。