2016-03-24 6 views
0

linqを使用して テーブルの複数の行で列の値(ここでは2014)の1つが繰り返されるデータテーブルから特定の年(たとえば2014)のレコードをすべて選択するにはどうすればいいですか? C#の他のメソッド。重複する値を持つデータテーブルのすべてのレコードを選択する

これは、データテーブルは次のとおりです。私はDataTablesで働いてきたので、

datatable

+0

私はすべての複製されたレコードを取得しようとしていますが、何をしていても重複を取り除き、フィルタリングされたデータを与えるでしょう...しかし、とにかく助けてください。 – Babu

答えて

1

あなたはすべてのレコードを取得しようとしている場合は、使用がLINQクエリ翌年2014の上にある、それはあなたのデータ列がデータを持っているかどうかチェックします、私は確信して、それは意志作品..

 //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

それはしばらくしているが、私は、これはそれを行うべきだと思います。 dtがあなたのSystem.Data.DataTableある

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

:特定の年の行のみを選択するには

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

:今年は、複数の行間で複製された行を選択する

+0

あなたの素早い回答ありがとうございます。 2015年などがあります。 – Babu

+0

私の編集はあなたが望んでいるものに少し正確です。 – Shelby115

+0

あなたの両方の答えJonzに感謝します。 – Babu

0

これはC#より高速であるため、データベースで実行してください。 DBは索引を持つことができますが、C#には索引はありません。

select *, count(1) as totalCount 
group by year 
having totalCount > 1 
関連する問題