Удаление дубликатов из таблицы данных с помощью C# - PullRequest
0 голосов
/ 04 мая 2020

У меня есть дубликаты значений в этом формате в таблице данных

Sak    Dte
1      12/31/2020
2      12/31/2020
3      04/01/2020
3      12/31/2020

Мне нужно удалить Sak 3 со значением 04/01/2020 из таблицы данных. Ниже приведен код, который я использую, но он удаляет Sak 3 со значениями 31.12.2020, любые идеи, как решить эту проблему. Примечание. Если вы найдете похожее значение sak, вам нужно удалить значение прошедшей даты (dte) и сохранить значение будущей даты (dte). убрать 04/01/2020 и сохранить 31.12.2020 Ожидаемый O / P Sak Dte 1 12/31/2020 2 12/31/2020 3 12/31/2020

private DataTable RemoveDuplicateRows(DataTable table)
{
    List<DataRow> rmList = new List<DataRow>();
    Dictionary<long, long> dictionary = new Dictionary<long, long>();

    foreach (DataRow row in table.Rows)
    {
        long sak = Convert.ToInt64(row["Sak"]);
        if (dictionary.ContainsKey(sak) == false)
        {
            dictionary.Add(sak, sak);
        }
        else
        {
            rmList.Add(row);
        }

    }
    foreach (DataRow row in rmList)
    {
        table.Rows.Remove(row);
    }

    //Datatable which contains unique records will be return as output.
    return table;
}

1 Ответ

0 голосов
/ 04 мая 2020

Попробуйте:

table = table.AsEnumerable()
       .GroupBy(r => r["datetime"])
       .Select(g => g.OrderByDescending(c => c["datetime"]).FirstOrDefault())
       .CopyToDataTable();

Я не знаю название вашего столбца даты и времени. Не уверен, что это Dte, поэтому я просто написал "datetime".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...