Удаление повторяющихся строк из Таблицы данных на основе нескольких столбцов
У меня есть таблица данных, которая содержит много повторяющихся строк, мне нужно отфильтровать эти строки из таблицы данных на основе нескольких столбцов, чтобы получить отдельные строки в результирующей таблице данных....
Barcode Itemid PacktypeId 1 100 1 1 100 2 1 100 3 1 100 1 1 100 3
нужны только строки, которые содержат packtypeid 1,2,3 оставшиеся 4-я и 5-я строки должны быть удалены
Я пробовал использовать два метода, но ни один из них не сработал для лучшего результата
Таблица данных содержит более 10 столбцов, но уникальный столбец "штрих-код", "идентификатор элемента", "PackTypeID"
Способ-1:
dt_Barcode = dt_Barcode.DefaultView.ToTable(true, "Barcode", "ItemID", "PackTypeID");
Вышеописанный метод фильтрует строки, но он возвращает столбцы только 3 значения столбцов, мне нужны целые 10 значений столбцов.
Способ-2:
List<string> keyColumns = new List<string>(); keyColumns.Add("Barcode"); keyColumns.Add("ItemID"); keyColumns.Add("PackTypeID"); RemoveDuplicates(DataTable table, List<string> keyColumns) { var uniqueness = new HashSet<string>(); StringBuilder sb = new StringBuilder(); int rowIndex = 0; DataRow row; DataRowCollection rows = table.Rows; int i = rows.Count; while (rowIndex < i) { row = rows[rowIndex]; sb.Length = 0; foreach (string colname in keyColumns) { sb.Append(row[colname]); sb.Append("|"); } if (uniqueness.Contains(sb.ToString())) { rows.Remove(row); } else { uniqueness.Add(sb.ToString()); rowIndex++; } }
Вышеприведенный метод возвращает исключение типа нет строк в позиции 5