using System.Data;
namespace MaksIT.Core.Extensions;
public static class DataTableExtensions {
public static int DuplicatesCount(this DataTable dt1, DataTable dt2) {
if (dt1 == null)
throw new ArgumentNullException(nameof(dt1));
if (dt2 == null)
throw new ArgumentNullException(nameof(dt2));
var duplicates = 0;
foreach (DataRow dtRow1 in dt1.Rows) {
var dt1Items = dtRow1.ItemArray.Select(item => item?.ToString() ?? string.Empty);
var dt1Comp = string.Join("", dt1Items);
foreach (DataRow dtRow2 in dt2.Rows) {
var dt2Items = dtRow2.ItemArray.Select(item => item?.ToString() ?? string.Empty);
var dt2Comp = string.Join("", dt2Items);
if (dt1Comp == dt2Comp) {
duplicates++;
}
}
}
return duplicates;
}
///
/// Returns distinct records based on specified columns.
///
///
///
///
public static DataTable DistinctRecords(this DataTable dt, string[] columns) {
if (dt == null)
throw new ArgumentNullException(nameof(dt));
if (columns == null)
throw new ArgumentNullException(nameof(columns));
return dt.DefaultView.ToTable(true, columns);
}
}