请查询LINQ查询帮助.选择每个FK的最新记录

Wil*_*iam 0 sql linq

假设我有一个看起来像这样的表:

Id     CheckboxId     Selected     DateCreated
1      1              1            1/1/2010
2      2              1            1/2/2010
3      1              0            1/3/2010
4      3              1            1/4/2010
5      3              0            1/5/2010
Run Code Online (Sandbox Code Playgroud)

CheckboxId是一个FK,该表只是选中或取消选中框的历史记录.

我想得到的是每个CheckboxId的最新记录.在我的演示表的情况下,我想要第2,3和5行.你会如何实现这一目标?此外,我确信这与查询开头的"where"一样简单,但如果它也可以修改为仅在指定日期之前获取记录,这将是非常棒的.

我无法弄清楚如何在SQL中编写查询来执行此操作,并且无法进行链接查询.我敢肯定它必须是从一个不同的checkboxIds的子查询中选择,再加上一个或多个组,但我的SQL并不是那么好.

非常感谢您的帮助.

Jos*_* M. 5

应该是这样的:

var results = (from x in context
       group x by x.CheckboxID into g
       select new
       {
           CheckboxID = g.Key,
           MaxItem = g.OrderByDescending(o => o.DateCreated).FirstOrDefault()
       });
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

foreach (var x in results)
    x.MaxItem.Selected //...etc.
Run Code Online (Sandbox Code Playgroud)