# 使用Linq来获取在一个字段中具有重复值的最后N行数[英] Using Linq to get the last N number of rows that have duplicated values in a field

### 问题描述

```Example:

> Id | Mycolumn
> - - - - - - -
> 1 | name55555
> 2 | name22
> 3 | name22
> 4 | name22
> 5 | name55555
> 6 | name55555
> 7 | name1

Primary Key: ID
OrderBy: ID
Repeated column: Mycolumn
```

## 推荐答案

```data.Mytable
.OrderByDescending(m => m.Id)
.GroupBy(m => m.Mycolumn)
.FirstOrDefault(group => group.Count() >= N)
.Take(N)
.Select(m => m.Id)
```

### 问题描述

Given a database table, a column name C, and a number N larger than 1, how can I get a group of rows with equal values of column C which has at least N rows? If there exists more than one such group, I need to get the group which contains the newest entry (the one with the largest Id).

Is it possible to do this using LINQ to Entities?

```Example:

> Id | Mycolumn
> - - - - - - -
> 1 | name55555
> 2 | name22
> 3 | name22
> 4 | name22
> 5 | name55555
> 6 | name55555
> 7 | name1

Primary Key: ID
OrderBy: ID
Repeated column: Mycolumn
```

If N = 3 and C = Mycolumn, then we need to get rows which have the column MyColumn duplicated at least 3 times.

For the example above, it should return rows 1, 5 and 6, because last index of name55555 is 6, and last index of name22 (which is also repeated 3 times) is 4.

## 推荐答案

```data.Mytable
.OrderByDescending(m => m.Id)
.GroupBy(m => m.Mycolumn)
.FirstOrDefault(group => group.Count() >= N)
.Take(N)
.Select(m => m.Id)
```