具有可空类型的MongoDB C#Linq驱动程序

时间:2013-06-13 16:48:59

标签: linq nullable mongodb-.net-driver

我正在使用mongodb c#驱动程序并尝试了以下查询

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

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

我收到以下运行时错误:

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

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

3 个答案:

答案 0 :(得分:1)

我发现了一种解决方法,虽然它不是很好:

collection.AsQueryable().Where(x => x.IsArchived ?? false)

答案 1 :(得分:1)

我知道我们在域中使用可空类型,但似乎找不到任何特定的查询它们的实例。你可以试试这个:

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

或者,如果不编译:

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

答案 2 :(得分:0)

尝试

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

你的表达式转换为mongo查询,不支持C#GetValueOrDefault,它会为你提供异常