Linq實現DataTable動態去重複
阿新 • • 發佈:2019-02-03
本文介紹一種按欄位動態對DataTable去除重複資料的方法
/// <summary> /// 按照fieldName從sourceTable中選擇出不重複的行, /// 並且返回sourceTable中所有的列。 /// </summary> /// <param name="sourceTable">源表</param> /// <param name="fieldName">欄位陣列</param> public static DataTable DistinctSomeColumn(DataTable sourceTable, params string[] fieldName) { if (fieldName == null || fieldName.Length == 0) return sourceTable; return sourceTable.AsEnumerable().Distinct(new ColumnEquals(fieldName)).CopyToDataTable(); } public class ColumnEquals : IEqualityComparer<DataRow> { public ColumnEquals(string[] sArr) { _sArr = sArr; } private string[] _sArr; public bool Equals(DataRow x, DataRow y) { return !_sArr.Any(p => !x[p].Equals(y[p])); } public int GetHashCode(DataRow dr) { return dr.ToString().GetHashCode(); } }