xamarin 在Realm .NET中使用“IN”关键字编写过滤器查询的正确语法是什么

sqougxex  于 12个月前  发布在  .NET
关注(0)|答案(2)|浏览(119)

我正在使用Xamarin为我的数据库构建一个应用程序MongoDB Realm. Realm允许您使用基于字符串的查询语言,并公开了一个Filter函数.他们链接this NSPerdicate备忘单来帮助指导您如何编写查询.然而,我无法获得“IN”查询工作.
在我的代码中,我目前有这个类,我试图查询:

public class Person : RealmObject
{
    [PrimaryKey]
    public int Id { get; set; }

    public string Name { get; set; }
}

字符串
我的查询看起来像这样:

var foundPersons = realm.All<Person>().Filter("Id IN { 1,2 }");


运行此函数时,将给予异常:Realms.RealmException:“无效 predicate :”Id IN {1,2}“:语法错误,意外的”错误“
我也试过不带花括号的查询:

var foundPersons = realm.All<Person>().Filter("Id IN 1,2");


这将给予以下错误:Realms.RealmException:“Invalid predicate:”Id IN 1,2“:syntax error,unexpected”,“expecting end of file”
我尝试过的其他方法是使用[]括号和使用引号,但它们都给出给予错误。
我如何以正确的方式编写这个查询,以便它将返回所有ID为1或2的Person?

oyt4ldly

oyt4ldly1#

目前还不支持-请参阅Github上的this discussion。唯一的解决方法是将字符串 predicate 生成为多个相等语句与OR组合:

var values = new[] { 1, 2 }; // Or however you get them
var filter = string.Join(" OR ", values.Select(v => $"(Id == {v})"));
var results = Realm.All<Person>().Filter(filter);

字符串

disbfnqx

disbfnqx2#

我设法使过滤器到最新的Realm.Net中的list字段

<PackageReference Include="Realm">
      <Version>11.6.1</Version>
</PackageReference>

个字符
https://www.mongodb.com/docs/realm/realm-query-language/#query-formats

相关问题