像這樣的東西可能會訣竅。
與結果的對象是這樣的:
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