我在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>
并非所有实体都有此表中的行。
你可以帮帮我吗?
谢谢你。
答案 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是一个字符串,那就更复杂了。