【发布时间】:2017-10-12 20:09:11
【问题描述】:
我在使用 Realm Xamarin (C#) 进行 LINQ 查询时遇到问题。
在创建以下类并尝试获取 Person 为 null 的所有 DogModel 对象时,我收到“日期类型不匹配”RealmException:
public class DogModel : RealmObject
{
[PrimaryKey]
public long Id { get; set; }
public PersonModel Owner { get; set; }
}
public class PersonModel : RealmObject
{
[PrimaryKey]
public long Id { get; set; }
}
var p1 = new PersonModel();
p1.Id = 1;
var d1 = new DogModel();
d1.Id = 1;
d1.Owner = p1;
var d2 = new DogModel();
d2.Id = 2;
d2.Owner = null;
var _realm = Realm.GetInstance();
_realm.Write(() =>
{
_realm.Add(p1, true);
_realm.Add(d1, true);
_realm.Add(d2, true);
});
var data1 = Realm.GetInstance().All<DogModel>()
.ToList(); // This works
var data2 = Realm.GetInstance().All<DogModel>()
.Where(x => x.Owner == null)
.ToList(); // This does not work
在第二个 LINQ 查询中,我希望得到一个包含 1 个项目(ID 为 2 的 DogModel)的列表,但会引发“日期类型不匹配”RealmException。
为什么会这样?有什么办法吗?
【问题讨论】:
-
将 OwnerId 存储为可以为空的 long 而不是复杂的 Owner 对象可能会更好。然后检查 OwnerId 是否为空。
-
这是可能的,但它似乎是一种笨拙的解决方案。它应该可以工作,对吧?这对我来说似乎是一个错误......