3

私のデータテーブルを考えてみてください

Id  Name  MobNo
1   ac    9566643707
2   bc    9944556612
3   cc    9566643707

LINQを使用せずにc#で3重複する列値を含む行を削除する方法。MobNoSOについても同様の質問を見てきましたが、すべての回答でLINQが使用されています。

4

5 に答える 5

4

次の方法は私が望むことをしました....

public DataTable RemoveDuplicateRows(DataTable dTable, string colName)
    {
        Hashtable hTable = new Hashtable();
        ArrayList duplicateList = new ArrayList();

        //Add list of all the unique item value to hashtable, which stores combination of key, value pair.
        //And add duplicate item value in arraylist.
        foreach (DataRow drow in dTable.Rows)
        {
            if (hTable.Contains(drow[colName]))
                duplicateList.Add(drow);
            else
                hTable.Add(drow[colName], string.Empty);
        }

        //Removing a list of duplicate items from datatable.
        foreach (DataRow dRow in duplicateList)
            dTable.Rows.Remove(dRow);

        //Datatable which contains unique records will be return as output.
        return dTable;
    }
于 2010-05-24T06:49:10.117 に答える
1

CSVファイルを読んでいるとき(少し擬似コードですが、画像が表示されます):

List<String> uniqueMobiles = new List<String>();

String[] fileLines = readYourFile();

for (String line in fileLines) {
   DataRow row = parseLine(line);
   if (uniqueMobiles.Contains(row["MobNum"])
   {
       continue;
   }
   uniqueMobiles.Add(row["MobNum"]);
   yourDataTable.Rows.Add(row);       
}

これにより、一意の携帯電話を含むレコードのみがデータテーブルに読み込まれます。

于 2010-05-24T06:26:07.723 に答える
1

これが最も簡単な方法です。

****

var uniqueContacts = dt.AsEnumerable()
                       .GroupBy(x=>x.Field<string>("Email"))
                       .Select(g=>g.First());

**このスレッド LINQで、特定の行の値に基づいてデータテーブルから重複する行を削除することがわかりました

私がデータテーブルとして返すのは実際には何でしたか

DataTable uniqueContacts = dt.AsEnumerable()
                           .GroupBy(x=>x.Field<string>("Email"))
                           .Select(g=>g.First()).CopyToDataTable();
于 2015-03-18T09:25:41.757 に答える
0

シャープなDBでこれを実行する前にDISTINCTの内部動作を調べたいと思うかもしれませんが(必ずバックアップしてください!)、私が思うように動作する場合(最初の値を取得する)、使用できるはずです(何か次のSQLと非常によく似ています。

DELETE FROM YourTable WHERE Id NOT IN (SELECT DISTINCT Id, MobNo FROM YourTable);
于 2010-05-24T06:18:14.690 に答える
0

C#では「IEqualityComparer」を使用できます

于 2010-05-24T09:35:03.070 に答える