我在Atlas中有一个embedded文档,我试图从Realm中查询一个字段(即Document.ProfileTab.AadharNo),但得到 例外:System.NotSupportedException: 'The left-hand side of the Call operator must be a direct access to a persisted property in Realm. 无法处理‘c.ProfileTab.AadharNo’.‘

在领域SDK中,我try 这样查询该字段:

var v = App.realmInstance.All<App.ArogyaMainClass>().Where(
    c => !string.IsNullOrEmpty(c.ProfileTab.AadharNo) 
    && 
    c.ProfileTab.AadharNo.Equals(entryAadharNo.Text.Trim())
    )
    .ToList();

在球场上创建索引会有帮助吗?如果领域需要持久化字段,那么它是什么?如何使该字段持久化?我需要在赛场上设置[必填]吗?请提出一些建议.先谢谢你.

以下是领域对象模型:

        public class ArogyaMainClass : RealmObject
    {
        [MapTo("_id")]
        [PrimaryKey]
        public ObjectId? Id { get; set; } = ObjectId.GenerateNewId();
        [MapTo("profileTab")]
        public ArogyaProfileTab ProfileTab { get; set; }
    }


        public class ArogyaProfileTab : EmbeddedObject
    {
        [MapTo("PatientName")]
        public string PatientName { get; set; }
        [MapTo("AadharNo")]
        public string AadharNo { get; set; }
        [MapTo("PhoneNo")]
        public string PhoneNo { get; set; }
    }

推荐答案

遗憾的是,.NET领域SDK的LINQ实现还不支持对链接对象的查询. 为了达到您所展示的效果,您需要使用Filter.Filter方法中使用的语言称为Realm Query Language.

针对您需要的查询将如下所示

var v = App.realmInstance.All<App.ArogyaMainClass>().Filter("ProfileTab.AadharNo.@count > 0 AND ProfileTab.AadharNo == $0", entryAadharNo.Text.Trim()).ToList();

.net相关问答推荐

使用.NET 8时无法识别运行标识符

.NET MAUI ListView - ObservableCollection - 在异步方法期间不更新

为什么 .NET 内部 Hashtable 中有一个 Thread.Sleep(1)?

将 BitmapImage 转换为 Bitmap,反之亦然

生产代码中的 System.Diagnostics.Debug.WriteLine

使用泛型装箱和拆箱

哪个单元测试框架?

如何更改 double.ToString() 中小数点的符号?

Mono 是树莓派

自定义属性的构造函数何时运行?

C# - 你如何停止计时器?

String.Replace() 与 StringBuilder.Replace()

哪个密码字符在 winforms 文本框中显示黑点 (•)?

将记录器作为单身人士是一个好习惯吗?

立即检测客户端与服务器套接字的断开连接

EF Core 添加迁移构建失败

在 .NET 中,null 的哈希码是否应该始终为零

判断对象列表是否包含具有特定值的属性

是否可以判断对象是否已附加到实体框架中的数据上下文?

序列化一个可为空的 int