Tag: discriminator

使用C#MongoDB LINQ和鉴别器

我有一个MongoDB集合,其中包含三个不同类(A,B,C)的文档,这些类都inheritance自公共类D. 使用官方C#驱动程序,我插入了所有三种类型(A,B,C)的文档,它们都与_t鉴别器一起正确显示,并且在我的代码中,他们的类映射被注册。 如果我发出LINQ查询,如下所示(使用VB): dim Result = database.GetCollection(“mycol”).AsQueryable(Of C).Where(some where clause) 如果我计算结果,我收到一个错误“元素’来自类A的元素名称’与类C的任何字段或属性都不匹配。” 判断器是不是要在AsQueryable(Of C)代码中AsQueryable(Of C) ? 当我发出.Count我的Where子句(特定于C类元素)被应用于A,B和C的文档。 我尝试添加.OfType(Of C)没有效果,尝试使用.ToList首先转换为List,但我继续得到相同的错误。 有任何想法吗? 作为背景,我的客户端代码通常会处理类型为D的对象.A,B,C共享许多从Dinheritance的公共属性,我想将索引放在上面,因此我把它们放在一个集合中。 但是,偶尔我需要在特殊情况下直接引用类型A,B或C的对象。