Linq вызывает исчезновение коллекции при попытке использовать OrderByDescending - PullRequest
1 голос
/ 16 апреля 2010

Для фона я использую MongoDB и драйвер Linq Роба Конери. Код, который я пытаюсь сделать так:

using (var session = new Session<ContentItem>())
{
    var contentCollection = session.QueryCollection.Where(x => x.CreatedOn < DateTime.Now).OrderByDescending(y => y.CreatedOn).ToList();
    ViewData.Model = contentCollection;
}

это будет работать на одной машине, но на другой машине я не получаю результатов. Чтобы получить результаты, я должен сделать

using (var session = new Session<ContentItem>())
{
    var contentCollection = session.QueryCollection.Where(x => x.CreatedOn < DateTime.Now).ToList();
    ViewData.Model = contentCollection.OrderByDescending(y => y.CreatedOn).ToList();
}

Я должен сделать ToList () в обеих строках, или нет результатов. Если я пытаюсь что-то связать, это ломается. Это тот же проект, все DLL загружены локально. Обе машины имеют одинаковую структуру, версии Visual Studio и дополнения. единственное отличие состоит в том, что один имеет VisualSVN, другой - AnkhSVN. Я не вижу тех, кто вызывает проблему.

Кроме того, во время отладки на машине, которая не работает, вы можете видеть элементы в коллекции, и если вы удалите упорядочивание все вместе, это будет работать. Это поставило меня в тупик.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2010

Что такое содержание x.CreatedOn? Запрос

Где (x => x.CreatedOn

не выполняется до фактического использования contentCollection. Во втором примере ToList () вызывает немедленное выполнение запроса, в то время как комбинированный Where (..). OrderByDescending (..) может быть выполнен позже (не знаю, что делает ViewData.Model). Возможно, это связано с некоторыми странными проблемами со временем.

0 голосов
/ 18 апреля 2010

Это звучит подозрительно, как старая добрая ошибка в поставщике MongoDB LINQ для меня. Что произойдет, если вы попробуете код ниже? Возвращает ли все товары в обратном порядке? Если это так, возможно, поставщик LINQ просто не поддерживает сложные запросы.

using (var session = new Session<ContextItem>())
{
    var allByDateReverse =
        session.QueryCollection.OrderByDescending(x => x.CreatedOn);
    ViewData.Model = allByDateReverse.ToList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...