Почему linq не может найти реализацию для mongodb?
Я пытаюсь использовать linq в C# с mongodb в соответствии с учебником здесь http://docs.mongodb.org/ecosystem/tutorial/use-linq-queries-with-csharp-driver/
Я имею:
- Директива using для MongoDB.Driver.Linq
- Класс с несколькими полями, наследующий другой класс, который просто предоставляет стандартное поле ObjectId Id.
- Ссылка на коллекцию указанного класса типа MongoCollection, полученную Connection.GetCollection.
- Наконец, мой запрос - из элемента в 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;
}
}
}
2 ответа
Решение
Чтобы найти поставщика Linq, нужно иметь не только оператор использования для поставщика, но и сам System.Linq.
Вам не хватает запрашиваемого типа, по крайней мере, так я думаю после просмотра учебной ссылки. Если это против MongoCollection
Я думаю, ваш запрос должен был быть:
var query = from item in MyCollection.AsQueryable<MongoCollection>() select item;