注目の記事 PICK UP!

  • C#

C# LINQを使って重複行をGroup byする方法

DataTableに重複行がある場合、ユニークにしたいときがあります。LINQを使ってGroup byをすれば簡単にグルーピングができます。

 

スポンサーリンク

 


DataTable dt = new DataTable();

// DataTableに列を追加
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Address", typeof(string));

//サンプルデータ作成
for (int i = 0; i < 4; i++)
{
    DataRow dr = dt.NewRow();
    if (i < 2)
    {
        dr["ID"] = i + 1;
        dr["Address"] = "東京都";
        dt.Rows.Add(dr);
    }
    else
    {
        dr["ID"] = i + 1;
        dr["Address"] = "神奈川県";
        dt.Rows.Add(dr);

    }
}

// Addressをユニークにする
var AddressList = from tbl in dt.AsEnumerable()
              group tbl by tbl.Field<string>("Address") into g
                select new
                {
                    Address = g.Key
                };

// ElementAtメソッドでデータにアクセスする
string tokyo= AddressList.ElementAt(0).Address;    // 東京都
string kanagawa= AddressList.ElementAt(1).Address; // 神奈川県

DataTableの特定カラムをユニーク

サンプルデータ

上記のサンプルデータに対して27行目のLINQコマンドを実行すると、Addressをグルーピングします。AddressListの中身を見るとAddressがユニークになっているのが分かります。

グルーピング結果

 

 

 

ElementAtメソッドでデータ抽出

AddressListのデータを取り出すには、ElementAtメソッドを利用します。

インデックス番号を指定することでデータを取り出すことができます。

スポンサーリンク

関連記事

  1. C# ディクショナリを使う目的と方法

  2. C# DataTableにCSVを読み込む

  3. C# LINQで移動平均線を作成する

  4. C#でOutlook2010を使ったメール送信方法

  5. Android Studio jarファイルを追加したらリビルドしよう

  6. C# DataTableの特定データにNULLを入れる

  7. C# DataTableの特定カラムを削除

  8. C# DataTableのカラム名を変更

  9. C#でHTMLのtableタグを生成する方法

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP