实体列表,最大日期,最大行数_id

时间:2017-07-04 06:34:50

标签: c# date sql-server-2012

我在SQLServer中有表。
我在实体ID的c#中有列表。 (例如:50,70,120等)。
对于每个实体,我需要仅使用具有最大日期的行,并且在其中,使用row_id的最大值。

例如:

entity        date_value       row_id
50            30/06/2017       3000<br>
75            30/04/2017       2900<br>
50            30/06/2017       2890<br>
50            30/05/2017       2500<br>
50            30/06/2017       2100<br>
75            30/03/2017       2000<br>

这里我只需要2行:

 50            30/06/2017       3000<br>
 75            30/04/2017       2900<br>

并非所有实体都有此表中的行。

你可以帮帮我吗?

谢谢你。

3 个答案:

答案 0 :(得分:2)

我认为它可以帮助你

升序使用OrderBy(x => x.Col1).ThenBy(x => x.Col2)

或者为了降序使用这个

 OrderByDescending (x => x.Col1).ThenByDescending (x => x.Col2)

答案 1 :(得分:1)

您可以使用如下所示的LINQ:

Selected

答案 2 :(得分:1)

如果您使用实体框架而不是:

  using (var context = new YourAppConext)
  {
     var result = context.Table.GroupBy(x => x.entity).Select(y => y.OrderByDescending(z => z.date_value).ThenByDescending(t => t.row_id).FirstOrDefault()).ToList();
  }

想法是让子集具有相同的实体然后通过使用select我们展平组然后排序集并获取具有最大日期和行ID的数据 - 在相同日期记录的情况下。

注意如果row_id是一个字符串,那就更复杂了。