RavenDB OrderBy

Sub*_*bby 3 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);
Run Code Online (Sandbox Code Playgroud)

我得到了一系列列表,但没有按正确的顺序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 .... 
Run Code Online (Sandbox Code Playgroud)

知道为什么OrderBy不完全应该这样做吗?

nic*_*ane 7

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

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

Sort(x => x.Order, SortOptions.Int);
Run Code Online (Sandbox Code Playgroud)

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