Reallm .Net Linq字符串操作

时间:2018-11-11 22:04:08

标签: realm

我有一个位置代码列表,这些位置代码是建筑物/房间的串联,即“ BLD23223019”,其中前5个字符是建筑物。我从字符串中拆分了建筑物代码,并将其显示在一个列表中,以供用户选择,然后将其带到该建筑物内的房间列表。因此,我将建筑代码传递到“房间”列表中以过滤房间,我这样做是:

 _realm = Realm.GetInstance(RealmInstance.RealmPath);
        try
        {
            _locations = _realm.All<Building>().Where(x => x.BuildingCode.Contains(_room.RoomCode)).ToList();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
            throw;
        }

        ListViewLocations.ItemsSource = _locations;

但是它没有给我任何结果,相反,我得到一个目标调用错误,内部异常是“此对象属于一个封闭的领域”。如果我使用“ Equals(_room.RoomCode),也会发生这种情况。我不明白为什么仅从上面的代码就可以关闭领域。

我是Realm的新手,所以也许我做错了什么,如果有人能指出我正确的方向,那将不胜感激。

这是上面的代码引发的内部异常

  

在Realms.NativeException.ThrowIfNecessary(System.Func`2 [T,TResult]   替代程序)[0x0000a]在   /Users/realm/jenkins/workspace/realm_realm-dotnet_PR-1775/Realm/Realm/Native/NativeException.cs:57   在Realms.MarshalHelpers.GetString   (Realms.MarshalHelpers + NativeCollectionGetter getter)[0x0002b]在   /Users/realm/jenkins/workspace/realm_realm-dotnet_PR-1775/Realm/Realm/MarshalHelpers.cs:55   在Realms.ObjectHandle.GetString(System.IntPtr propertyIndex)   [0x00013]在   /Users/realm/jenkins/workspace/realm_realm-dotnet_PR-1775/Realm/Realm/Handles/ObjectHandle.cs:258   在Realms.RealmObject.GetStringValue(System.String propertyName)处   [0x00000]在   /Users/realm/jenkins/workspace/realm_realm-dotnet_PR-1775/Realm/Realm/RealmObject.cs:139   在AsssetMan.Models.Buildings.get_BuildingCode()[0x00014]中   D:\ Projects \ AssetManRealm \ AssetMan \ AssetMan \ Models \ Buildings.cs:8
  在(包装器托管到本地)   System.Reflection.MonoMethod.InternalInvoke(System.Reflection.MonoMethod,object,object [],System.Exception&)   在System.Reflection.MonoMethod.Invoke(System.Object obj,   System.Reflection.BindingFlags invokeAttr,System.Reflection.Binder   活页夹,System.Object []参数,System.Globalization.CultureInfo   文化)[0x00032]在<43dbbdc147f2482093d8409abb04c233>:0

1 个答案:

答案 0 :(得分:1)

感谢@mjwills我已经弄清楚了。如果我使用文字,则在linq扩展中使用var bob的第一个注释有效。这意味着变量或我将BuildingCode传递到RoomCode页面的方式必须存在问题。消息“领域已关闭”或类似的结果使我最初陷入困境,然后我想起了领域对象是“实时”的,并且当我关闭上一页中的_realm时,我正在传递给建筑对象。 RoomCode页面不再可用。因此,我新建了一个建筑物对象,然后从建筑物列表中选择了建筑物,然后将建筑物代码复制到其中,并将其传递给RoomCode的查找,以便在关闭Realm后仍然可以使用BuildingCode。  谢谢@mjwills。