【问题标题】:How to check for null on Nullable types using Linq expression in Realm?如何使用 Realm 中的 Linq 表达式检查 Nullable 类型的 null?
【发布时间】:2016-08-04 09:43:59
【问题描述】:

我想获取未设置 Modified 属性但似乎无法使其与 Realm 一起使用的所有元素。

示例代码:

public class FooModel : RealmObject
{
  public DateTimeOffset? Modified { get; set; }
}

...

public List<FooModel> GetAllUnmodified()
{
  var realm = Realm.GetInstance();

  //doesn't work
  var result1 = realm.All<FooModel>().Where(model => model.Modified == null).ToList();

  //doesn't work
  var result2 = realm.All<FooModel>().Where(model => !model.Modified.HasValue).ToList();

  //doesn't work
  DateTimeOffset? testValue = null;
  var result3 = realm.All<FooModel>().Where(model => model.Modified == testValue).ToList();

  //doesn't work
  var result4 = realm.All<FooModel>().Where(model => model.Modified == default(DateTimeOffset?)).ToList();

  return result1;
}

总是收到System.NotSupportedException: The rhs of the binary operator 'Equal' should be a constant or closure variable expression.System.NotSupportedException: The member 'HasValue' is not supported

我错过了什么吗?有什么好方法可以查看 Realm 的 Linq 实际支持什么?

在 Android 上使用 Realm Xamarin v0.77.1

编辑:

我确实按照评论者的建议尝试了creating a linq expression tree。这导致了 System.MissingMethodException: Method 'RealmResults'1.get_Provider' not found. 异常。

【问题讨论】:

  • 感谢您的建议。试一试后,我无法让它工作。我收到以下异常:System.MissingMethodException: Method 'RealmResults'1.get_Provider' not found.。所以它编译得很好,但在运行时会抛出一个错误。

标签: c# linq xamarin realm realm-net


【解决方案1】:

此功能缺失且具有高优先级:#517。我们非常清楚我们有许多 LINQ 缺点,我们正在研究整个领域,包括在不久的将来编写关于支持哪些功能的摘要。

【讨论】:

    【解决方案2】:

    以后看到这个的人请注意 - 此功能是在 0.77.0 版本中添加的,并且在当前的 0.78.1 中可用。

    我们现在支持与 null 的比较。

    public class Person : RealmObject
    {
        public bool? IsAmbivalent { get; set; }
    ...
    _realm.All<Person>().Where(p => p.IsAmbivalent == null);
    

    或者,对于字符串属性,还要检查:

    _realm.All<Person>().Where(p => string.IsNullOrEmpty(p.OptionalAddress));
    

    unit tests for more examples

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多