RavenDB OrderBy

时间:2013-06-04 09:40:04

标签: c# ravendb

在我的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没有完全按照它应该做到的?

1 个答案:

答案 0 :(得分:7)

如果您使用索引,则需要为Order属性设置sortoptions。 来自http://ravendb.net/docs/client-api/querying/static-indexes/customizing-results-order

  

另一方面,数值存储为文本,因此要求用户明确指定所使用的数字类型,以便强制执行正确的排序机制。通过在索引定义中的SortOptions中声明所需的排序设置,这很容易完成:

Sort(x => x.Order, SortOptions.Int);
  

上面列出的索引将允许按用户年龄(1,2,3,11等)的值进行排序。如果我们不指定此选项,则它将被词法排序(1,11,2,3等)。   默认的SortOptions值是String。适用于所有数字类型的值(字节,双精度,浮点数,整数,长整数和短整数)。

相关问题