C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: データセットの重複データ検出について


(過去ログ 70 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■40788 / inTopicNo.1)  データセットの重複データ検出について
  
□投稿者/ 初心者 (43回)-(2009/09/03(Thu) 09:19:14)

分類:[C#] 

データセットから指定するカラムの重複データ検出したいですが、
やり方がよくわかりません。
皆さんご指導をして頂けますでしょうか。
引用返信 編集キー/
■40790 / inTopicNo.2)  Re[1]: データセットの重複データ検出について
□投稿者/ オショウ (314回)-(2009/09/03(Thu) 10:16:30)
No40788 (初心者 さん) に返信
> データセットから指定するカラムの重複データ検出したいですが、
> やり方がよくわかりません。
> 皆さんご指導をして頂けますでしょうか。

  私は使ったことないのですが・・・
  VS2008ならば

  LINQ to DataSet

  http://msdn.microsoft.com/ja-jp/library/bb386977.aspx?ppud=4

  こういう方法もあります。

以上。参考まで
引用返信 編集キー/
■40816 / inTopicNo.3)  Re[2]: データセットの重複データ検出について
□投稿者/ やじゅ (1305回)-(2009/09/03(Thu) 20:09:46)
やじゅ さんの Web サイト
> ■No40788 (初心者 さん) に返信
>データセットから指定するカラムの重複データ検出したいですが、
>やり方がよくわかりません。

データセットのテーブルに計算列を追加(初期値 1)してを集計させ、2以上になれば重複データとする。

DataTableをグループ化し集計するには
http://yan-note.blogspot.com/2008/12/datatable_17.html

ついでに、DataTableから重複を取り除くには
http://yan-note.blogspot.com/2008/12/datatable.html
引用返信 編集キー/
■40823 / inTopicNo.4)  Re[1]: データセットの重複データ検出について
□投稿者/ もりお (63回)-(2009/09/03(Thu) 23:12:38)
No40788 (初心者 さん) に返信

重複と聞いてハッシュテーブルが思い浮かびました。

static void Main(string[] args)
{
    IDictionary<string, IList<DataRow>> list = getRepetition(getData(), new int[] { 1 });
    foreach (string key in list.Keys)
    {
        IList<DataRow> rows = list[key];
        foreach (DataRow row in rows)
        {
            Console.WriteLine("key:{0} count:{1} id:{2} name:{3} age:{4}",
                key, rows.Count, row[0], row[1], row[2]);
        }
    }
}

static IDictionary<string, IList<DataRow>> getRepetition(DataTable table, int[] keyIndexes)
{
    IDictionary<string, IList<DataRow>> dic =
        new SortedList<string, IList<DataRow>>();
    foreach (DataRow row in table.Rows)
    {
        string key = getKey(row, keyIndexes);
        if (!dic.ContainsKey(key))
        {
            dic.Add(key, new List<DataRow>());
        }
        dic[key].Add(row);
    }
    return dic;
}

static string getKey(DataRow row, int[] indexes)
{
    string key = "";
    foreach (int index in indexes)
    {
        key += row[index].ToString();
    }
    return key;
}

static DataTable getData()
{
    DataTable table = new DataTable("Member");
    table.Columns.Add(new DataColumn("id", typeof(int)));
    table.Columns.Add(new DataColumn("name", typeof(string)));
    table.Columns.Add(new DataColumn("age", typeof(int)));
    table.Rows.Add(1, "もりお", 30);
    table.Rows.Add(2, "もりお", 40);
    table.Rows.Add(3, "まゆみ", 30);
    return table;
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -