Получение максимальной записи из вертикальной таблицы и всех вертикалей - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть одна таблица, называемая заданиями.Каждая работа публикуется на определенном сайте, поэтому создается вертикальная запись с датой публикации и сайтом, на котором она была опубликована.

Вот базовый пример моих данных

Работы:

  • jobid.
  • positiontitle.

Опубликовано:

  • dateposted.
  • active.
  • jobid.
  • sitename.

Так что мне нужно три частииз этих данных в моем наборе результатов.Заголовок позиции, максимальная дата размещения и список всех названий мест из таблицы «Опубликовано», где активен - «истина».Кто-нибудь знает, как я мог сделать это в linq to sql одним запросом?

1 Ответ

1 голос
/ 13 февраля 2012

Нечто подобное может сработать.

объект с таким результатом:

public class MyObject
{
    public string positiontitle { get; set; }
    public DateTime? maxDatePosted { get; set; }
    public IEnumerable<string> SiteNames { get; set; }
}

datetime должен иметь nullable datetime, чтобы он работал.Тогда запросы будут такими:

var result=(
        from jobs in db.Jobs
        select new MyObject()
        {
            positiontitle=jobs.positiontitle,
            maxDatePosted=db.Posted
                            .Where(p =>p.jobid==jobs.jobid)
                            .Max(p =>p.dateposted),
            SiteNames=db.Posted
                        .Where (p =>p.jobid==jobs.jobid && p.active==true)
                        .Select (p =>p.siteName)
        }
    ).ToList();

Если вы хотите, чтобы максимальная дата была выставлена ​​и для активных.Тогда что-то вроде этого:

var result=(
        from jobs in db.Jobs
        select new MyObject()
        {
            positiontitle=jobs.positiontitle,
            maxDatePosted=db.Posted
                            .Where(p =>p.jobid==jobs.jobid && p.active==true)
                            .Max(p =>p.dateposted),
            SiteNames=db.Posted
                        .Where (p =>p.jobid==jobs.jobid && p.active==true)
                        .Select (p =>p.siteName)
        }
    ).ToList();

Где db - контекст базы данных linq

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...