从垂直表和所有垂直方向获取最大记录

时间:2012-02-13 13:42:57

标签: linq-to-sql

我有一个名为jobs的表。每个作业都会发布到某个站点,因此会创建一个垂直记录,其中包含发布日期和发布到的站点。

以下是我的数据的基本示例

工作:

  • jobid
  • positiontitle

已发布:

  • dateposted
  • active
  • jobid
  • sitename

所以我在结果集中需要三个这样的数据。位置标题,最大日期发布以及来自已发布表格中所有活动的静态名称列表。有没有人知道如何在linq to sql中用一个查询做到这一点?

1 个答案:

答案 0 :(得分:1)

这样的事情可能会成功。

结果如下的对象:

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数据库上下文