c# - Realm .NET Where 使用 Contains() 查询抛出 System.NotSupportedException
问题描述
我正在使用 Realm for .NET v10.1.3,并且我有一个删除一些对象的方法。从表明支持 Contains 的文档中提取,我有以下代码段:
var results = realm.All<DeviceEventEntity>()
.Where(entity => ids.Contains(entity.Id));
realm.RemoveRange(results);
但是在realm.RemoveRange(results)
执行时,Realm 会抛出 System.NotSupportedException。我在这里做错了什么?还是 Realm 不支持包含?
这是堆栈跟踪:
System.NotSupportedException
The method 'Contains' is not supported
at Realms.RealmResultsVisitor.VisitMethodCall(MethodCallExpression node) in C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Linq\RealmResultsVisitor.cs:line 378
at Realms.RealmResultsVisitor.VisitMethodCall(MethodCallExpression node) in C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Linq\RealmResultsVisitor.cs:line 164
at Realms.RealmResults`1.CreateHandle() in C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Linq\RealmResults.cs:line 65
at System.Lazy`1.CreateValue()
at System.Lazy`1.LazyInitValue()
at Realms.RealmResults`1.get_ResultsHandle() in C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Linq\RealmResults.cs:line 30
at Realms.Realm.RemoveRange[T](IQueryable`1 range) in C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Realm.cs:line 1279
at DocLink.Client.Storage.Service.Event.DeviceEventService.<>c__DisplayClass2_0.<DeleteEvents>b__0() in
这是一个更完整的示例:
public Task DeleteEvents(List<ObjectId> ids) {
return Task.Run(() => {
using (var realm = GetRealm()) {
using (var transaction = realm.BeginWrite()) {
try {
var results = realm.All<DeviceEventEntity>().Where(entity => ids.Contains(entity.Id));
realm.RemoveRange(results);
transaction.Commit();
}
catch (Exception exception) {
transaction.Rollback();
throw new ServiceException("Unable to delete events. Transaction has been rolled back.", exception);
}
}
}
});
}
此外,库引用这样的文件似乎有点奇怪C:\jenkins\workspace\realm_realm-dotnet_PR-2362@2\Realm\Realm\Linq\RealmResultsVisitor.cs
。这不是我系统上的任何东西,库是通过 NuGet 拉入的。
解决方案
文档说遇到. NotSupportedException
阅读有关方法的评论以获取NSPredicate
备忘单链接,您可以使用它做很多事情:)
推荐阅读
- javascript - 如何通过单击一天将新事件添加到 fullcalendar.io
- python - 我如何编写代码来检查具有名称的文件(csv)是否已经存在?
- git - 使用 git 在我的存储库中找不到文件
- html - 为什么我的所有列都在一列中?
- react-native - 在 React Native 中滑动刷新以查看视图
- r - 如何聚合一列中的值以创建新列
- sql - 使用重复数据时如何创建合并 SQL
- ios - 缺少 NFCTagReaderSession 所需的权利
- android - ContextCompat.getColor() 忽略 NightMode
- python - 传输/切换/更改两列的值,如果一列是 0 / NaN