0

我收集了一些文件:

{
"Name": "MyName",
"LabelKey": "MyLabelKey"
}

集合中的 LabelKey 可能为 null 或不在文档中。如果我尝试使用 linq 订购此列表:

session.Query<MyMetaData>().OrderBy(x => x.LabelKey).ToList()

我只得到 LabelKey 不为空的记录。因此,如果我收集了 100 个文档并且只有 2 个具有 LabelKey 值,那么在我订购后我只会得到 2 个。即使它们的 LabelKey 为 null,我也需要订购所有集合。如果我尝试检查 not null 我会得到异常:

Could not understand how to translate '(x.LabelKey != null)' to a RavenDB query.
Are you trying to do computation during the query?
RavenDB doesn't allow computation during the query, computation is only allowed during index. Consider moving the operation to an index.

任何想法如何订购所有收藏品?

4

1 回答 1

1

方法一

不要存储空值。在进入的过程中,检查 null 并替换为空字符串。

方法二

创建静态索引。在Map表达式中,使用 null 合并运算符,例如:

LabelKey = x.LabelKey ?? string.Empty

然后使用该索引进行查询。

于 2013-04-05T15:29:01.970 回答