我想使用Linq从SQL Server表中获取每个组的最新记录。
表示例:
我想得到这个结果:
我的Linq查询为每个公司返回一条记录,但它不会返回最新的记录:
<listbox width="800px">
<listhead>
<listheader width="500px">header 1</listheader>
<listheader width="500px">header 2</listheader>
<listheader>header 3</listheader>
</listhead>
<listitem>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
</listitem>
<listitem>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
</listitem>
<listitem>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
<listcell>item 1</listcell>
</listitem>
</listbox>
我在这里缺少什么?为什么没有正确订购NextPaymentDate?
!! UPDATE !! 我的查询按预期工作。在分析了@Gilang和@JonSkeet评论后,我进行了进一步的测试,发现由于没有更新的列,我没有得到预期的结果。
答案 0 :(得分:1)
var query = from p in db.Payments
where p.Status == false
group p by p.CompanyID into op
select new {
CompanyID = op.Key,
NextPaymentDate = op.Max(x => x.NextPaymentDate),
Status = false
};
您的查询未正确排序的原因是您的查询没有进行适当的分组。您通过CompanyID正确分组,但是您必须通过调用聚合函数来检索最大的NextPaymentDate。
状态可以指定为false,因为它已经被早期子句中的Where子句过滤了。