像这样的东西可能会诀窍。
与结果的对象是这样的:
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数据库上下文
非常感谢你。还有一个问题。有时候有没有发布的作业,所以maxDatePosted字段为空。当我在Linqpad程序中运行示例时,出现以下错误 - “无法将null值分配给System.DateTime类型为非空值类型的成员。”当我运行生成的sql时,我发现它的maxDatePosted是null。任何想法如何在你的例子中设置该字段为可空的日期时间?再次感谢! – 2012-02-13 14:10:06
我更新了答案.. – Arion 2012-02-13 14:21:45
很好,再次感谢! – 2012-02-13 14:49:07