Использование LINQ-to-NHibernate Sort IQueryable для T на основе значения свойства в T's Children - PullRequest
2 голосов
/ 18 сентября 2010

Хотя проект, в котором у меня возникла эта проблема, касается другого домена, я нашел метафору, которая может помочь ясно представить мой вопрос:

Допустим, вам нужно было разработать веб-сайт форума, и требовалось, чтобы в представлении сайта по умолчанию отображалось Темы форума , упорядоченные по темам с самым последним Форумом. Сообщения . Как это можно сделать с помощью Linq-to-Nhibernate?

Вот пример того, как эти сущности могут выглядеть:

namespace MvcSandbox.Models
{

public class ForumThread : Entity
{
    public virtual string Topic { get; set; }
    public virtual IList<ThreadPost> Posts { get; set; }
}

public class ThreadPost : Entity
{
    private ForumThread _thread;

    public virtual ForumThread Thread
    {
        get { return _thread; }
    }

    public virtual DateTime PostDate { get; set; }

    public virtual string PostText { get; set; }
}
}

Итак, учитывая IQuerable из ForumThread , как можно использовать Linq для добавления предложения OrdbyBy, которое будет сортировать ForumThreads на основе Max (PostDate) из их сообщений коллекция? И из соображений производительности я пытаюсь найти решение, которое позволит Order By появляться в базе данных, а не в памяти.

Любая информация будет принята с благодарностью.

1 Ответ

0 голосов
/ 24 января 2013

Вы пробовали что-то вроде:

myQueryable.OrderBy(thread => thread.Posts.OrderByDescending(post => post.PostDate).FirstOrDefault())
...