2016-05-10 6 views
1

У меня есть курсор, который содержит, по меньшей мере, один элемент:Как вернуть первый элемент MongoCursor?

MongoCursor cursor = oColl.FindAs<CMongoCon>(Query.EQ("isAc", "1")); 

Я хотел бы вернуть только первый элемент. Сейчас я делаю это так

foreach (CMongoCon job in cursor) 
{ 
    return job; 
} 

Будет ли более простой способ, поскольку я знаю, что это первый элемент?

ответ

0

Это работает?

using System.Linq; 

... 

var whatYouAreAfter = cursor.FirstOrDefault(); 

cursor.First() также должен работать. Просто зависит от того, что вам нужно.

Вдохновленный сильно здесь: https://stackoverflow.com/a/19492292/2524589

+0

благодарит за быстрый ответ. Однако я видел этот точный ответ, но у меня нет этого свойства Single(), хотя включен System.Linq – Cher

+0

В этом примере они также делают .SetSortOrder (sortBy) .SetLimit (1), который может возвращать коллекцию, которая действительный для использования с System.Linq. Может существовать метод или метод расширения для класса MongoCursor, который возвращает ICollection или IEnumerable. – KSib

+0

Я не понимаю, хотя у меня есть system.linq, я не могу использовать эти свойства? – Cher

0

Почему вы не просто использовать C# свободно API для извлечения данных из Монго? Этот пример отлично работает в моей настройке.

public Doc GetFirstExistingDocument() 
{ 
    var client = new MongoClient(); 
    var database = client.GetDatabase("test"); 

    return database.GetCollection<Doc>("docs") 
     .Find(doc => !doc.Deleted) 
     .Sort(Builders<Doc>.Sort.Ascending(doc => doc.Date)) 
     .First(); 
} 
Смежные вопросы