我有表格数据:
Fname Lname Date ForeignKey
A B 2012-01-01 1
A B 2012-11-01 1
A B 2013-12-25 1
C K 2009-01-01 2
C K 2001-11-01 2
C K 2011-12-25 2
我的表在EF中被称为ABC 所以我想通过Foreign Key对它们进行分组,我可以通过使用此查询来实现,但是如何获取每行的详细信息?
var q = from abc in context.ABC
group abc by abc.ForeignKey into g
join efg in context.EFG on g.Key equals efg.AppId
select new
{
MortgId = g.Key,
TrackingDate = g.Max(val => val.Date),
Fname=g.?,
Lname=g.?,
Sale=efg.SalesAmount
};
foreach(var result in q)
{
if(result.Fname=="A")
{
}
}
它返回列表。 这给了我最大日期的记录,但我想得到这个最大日期的Fname和Lname的详细信息,我无法得到任何线索。
更新 结果应该是这样的:
Fname Lname Date ForeignKey
A B 2013-12-25 1
C K 2011-12-25 2
我希望了解最长日期的详细信息 NEW UPDATE: 所以我想在Fname的基础上进行检查,并且我已经提出了一个问号,即如何获得最大日期结果的Fname。 我希望现在很清楚。
答案 0 :(得分:1)
通过降序排序获取每个组具有最大日期的对象,并获得第一个:
var list = context.ABC.GroupBy(abc => abc.ForeignKey)
.Select(g => g.OrderByDescending(a => a.Date).First())
然后您可以轻松获得其他属性:
foreach (var abc in list)
{
var fname = abc.Fname;
var lname = abc.Lname;
}