0

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

我有:

  1. MongoDB.Driver.Linq 的 using 指令
  2. 一个有几个字段的类,继承了另一个只提供标准 ObjectId Id 字段的类。
  3. 对 MongoCollection 类型的集合的引用获得 Connection.GetCollection
  4. 最后,我的查询 - 从 MyCollection.AsQueryable() 中的项目中选择项目;

编译器抱怨错误:找不到查询模式的实现......

什么不见​​了?

- -编辑 - -

我已将此处的代码最小化以说明问题-

// .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;
        }
    }
}
4

2 回答 2

0

为了找到 Linq 提供程序,不仅必须具有提供程序的 using 语句,而且还必须具有 System.Linq 本身。

于 2014-03-24T10:07:09.713 回答
0

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

var query = from item in MyCollection.AsQueryable<MongoCollection>() select item;
于 2014-03-18T05:36:25.370 回答