为什么linq找不到mongodb的实现?

时间:2014-03-18 05:12:18

标签: c# linq mongodb asqueryable

我正在尝试使用linq在C#中使用mongodb按照教程http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/

我有:

  1. MongoDB.Driver.Linq的使用指令
  2. 包含少量字段的类,继承另一个只提供标准ObjectId Id字段的类。
  3. 对MongoCollection类型的所有类的集合的引用获得了Connection.GetCollection
  4. 最后,我的查询 - 来自MyCollection.AsQueryable()中的项目选择项目;
  5. 编译器抱怨错误:无法找到查询模式的实现...

    缺少什么?

    --- --- EDIT

    我在这里最小化了代码以说明问题 -

    // .Net
    using System.Collections.Generic;
    
    // 3rd Party
    using MongoDB.Bson;
    using MongoDB.Driver;
    using MongoDB.Driver.Builders;
    using MongoDB.Driver.Linq;
    
    namespace Chess2.Server {
        public static partial class Database {
            internal static MongoCollection<Document> Collection =
                GetCollection<Document>();
        }
        public class Document {
            public ObjectId Id;
            public int Field;
    
            public static IEnumerable<Document> Waiting() {
                // HERE IS THE LINQ THAT DOESN"T WORK
                return from item in
                           Database.Collection.AsQueryable<Document>()
                       where item.Field > 0
                       select item;
            }
        }
    }
    

2 个答案:

答案 0 :(得分:0)

你缺少可查询类型,至少这是我在查看教程链接后的想法。如果是查询MongoCollection,我认为您的查询应该是:

var query = from item in MyCollection.AsQueryable<MongoCollection>() select item;

答案 1 :(得分:0)

为了找到Linq提供者,不仅要有提供者的using语句,还要有System.Linq本身。