2016-03-24 2 views
0

Как выбрать всю запись конкретного года (например, 2014) из данных, где одно из значений столбца (здесь 2014) повторяется в нескольких строках таблицы , используя linq или любой другой метод в C#.Выберите все записи данных с повторяющимися значениями

Это DataTable:

datatable

+0

Я пытаюсь восстановить все дублированные записи, но все, что вы делаете, удалит дубликат и даст отфильтрованные данные ... Но помогите мне в любом случае .. – Babu

ответ

1

Если вы пытаетесь получить все записи лежит на 2014 год, используйте следующую Linq запроса, он будет проверять ваш столбец данных содержит данные или нет, я уверен, что он будет работа ..

 //selecting all the records of 2014 
     IEnumerable<DataRow> dtrow = default(IEnumerable<DataRow>); 
     dtrow = yourtable.AsEnumerable().Where(x => x.Field<Int64>("year") == Convert.ToInt64("2014")); 
     if (dtrow.Count() > 0) 
     { 
      dataTbl = dtrow.CopyToDataTable(); //dataTbl is the DataTable 
     } 
0

Это было некоторое время, так как я работал с DataTables, но я думаю, что это должно сделать это.

Чтобы выбрать строки, где год дублируется в более чем в одной строке:

dt.AsEnumerable().GroupBy(x => x["Year"]).Where(x => x.Count() > 1); 

Чтобы выбрать только те строки, для конкретного года:

dt.AsEnumerable().Where(x => x["Year"] == "2014"); 

Где dt ваша System.Data.DataTable.

+0

Спасибо за ваши быстрые ответы, но я хочу получить записи всего 2014 или 2015 и т. д. – Babu

+0

Надеюсь, мое редактирование немного точнее, чего вы хотите? – Shelby115

+0

Большое спасибо за ваши ответы Jonz. – Babu

0

Попробуйте сделать это в базе данных, так как это быстрее, чем C#. DB может иметь индекс, но C# не имеет.

select *, count(1) as totalCount 
group by year 
having totalCount > 1