我有一个名为jobs的表。每个作业都会发布到某个站点,因此会创建一个垂直记录,其中包含发布日期和发布到的站点。
以下是我的数据的基本示例
工作:
jobid
。positiontitle
。已发布:
dateposted
。active
。jobid
。sitename
。所以我在结果集中需要三个这样的数据。位置标题,最大日期发布以及来自已发布表格中所有活动的静态名称列表。有没有人知道如何在linq to sql中用一个查询做到这一点?
答案 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数据库上下文