MongoDB C# Linq驱动程序与可空类型

3
我正在使用mongodb c#驱动程序,并尝试以下查询。
collection.AsQueryable().Where(x => x.IsArchived.GetValueOrDefault())

其中 IsArchived 的类型为 bool?(可空布尔值)。

我遇到了下面的运行时错误:

Unsupported where clause: x.IsArchived.GetValueOrDefault().

有人知道如何查询可空类型吗?

3个回答

1
我发现了一个解决方法,虽然不是很好:
collection.AsQueryable().Where(x => x.IsArchived ?? false)

1

我知道在我们的领域中使用了可空类型,但似乎找不到任何有关查询它们的具体实例。您可以尝试以下方法:

collection.AsQueryable().Where(x => x.IsArchived == true)

如果那个不能编译,就用这个:

collection.AsQueryable().Where(x => x.IsArchived == (bool?) true)

0

尝试

collection.AsQueryable().Where(x => x.IsArchived!= null && x.IsArchived)

你的表达式被翻译成了Mongo查询语句,但它不支持C#中的GetValueOrDefault,这会导致异常。


编译器报错“&& x.IsArchived”是因为这不是有效的。使用“&& x.IsArchived.Value”会导致相同的运行时错误。 - Tuan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接