我是 RavenDB 的新手,尝试让 Any() LINQ 查询正常工作一直令人沮丧。这是我的文档的样子:
{
"Key": "BKey",
"Text": "B Key",
"IsLocal": false,
"Category": null,
"_destroy": false,
"Translations": [
{
"CultureCode": "es-ES",
"Text": null
},
{
"CultureCode": "ja-JP",
"Text": "Hello"
}
]
}
我希望以下查询能给我所有没有“es-ES”翻译的条目:
var nonTranslatedEntries =
_docs.Query<ResourceEntry>().Where( e => e.Translations == null || e.Translations.Count == 0 || !e.Translations.Any(t => t.CultureCode == "es-ES" && t.Text != null))
但是,这是行不通的。即使存在指定 CultureCode 的翻译,它也会带回条目。如果我在翻译数组中只有一项,它就可以工作。但是,一旦翻译数组中有多个项目,查询就会停止工作。
作为替代解决方案,我尝试执行以下操作:
var translatedEntries = from re in _docs.Query<ResourceEntry>()
where re.Translations.Any(t => t.CultureCode == cultureCode && t.Text != null)
select new {Id = re.Id};
var translatedIds = translatedEntries.ToList().Select(e => e.Id).ToList();
var nonTranslatedEntries =
_docs.Query<ResourceEntry>().Where(e => !e.Id.In(translatedEntryIds));
但这只会带回一个空列表。
任何帮助将不胜感激。
谢谢,
尼扎尔