首页 > 解决方案 > C# MongoDb 驱动程序 - 通过可空属性安全检查进行过滤

问题描述

我使用 .Net Core 3.1 和 MongoDB 驱动程序,并且我有一个方法,我想通过属性查找但该属性可以为空。方法如下:

public async Task<List<MyDataModel>> GetCustomersAsync(IEnumerable<long> ids)
    {
        var filterDefinition = new FilterDefinitionBuilder<MyDataModel>();
        var idsFilter = filterDefinition.In(x => x.Id.Value, mdmIds);

        return await this.Table.Find(idsFilter).ToListAsync();
    }

事情在 x.Id.Value 上,如果我不执行此操作,则会引发编译错误 Cannot convert lambda expression to type 'FieldDefinition<MyDataModel, long> 因为它不是委托类型。

如果我将 id 的类型从 long 更改为 long?它没有抱怨,但我在这里错过了什么或做错了什么吗?

谢谢

标签: c#mongodb

解决方案


在该过滤器之前,只需添加过滤器,它将过滤掉所有具有 null 作为 _id 的文档。我认为它被称为 Ne => filterDefinition.Ne((x => x.Id.Value, null)。


推荐阅读