0

我的表格数据为:

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 所以我想按外键对它们进行分组,我可以通过使用这个查询来做到这一点,但是现在如何获取每一行的详细信息?

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

我想获取关于最长日期的详细信息。
新更新: 所以我想在 Fname 的基础上进行检查,并且我打了一个问号,即如何获得最大日期结果的 Fname。我希望现在很清楚。

4

1 回答 1

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;
}
于 2013-02-06T10:36:11.147 回答