导入excel的列很多,只保留abcd这几个列的值,其他的列都清空
1 var row_Distinct = dt.Select().Select(d => 2 { 3 foreach (DataColumn col in dt.Columns) 4 { 5 if (col.ColumnName != "a" && 6 col.ColumnName != "b" && 7 col.ColumnName != "c" && 8 col.ColumnName != "d") 9 { 10 d.SetField(col, ""); 11 } 12 } 13 return d; 14 }).Distinct(new DataRowEqualityComparer());
导入excel的列很多,如果abcd这几个列的值相同则算重复行,Distinct
1 var row_Distinct = dt.Select().Distinct(new DataRowEqualityComparer()); 2 3 public class DataRowEqualityComparer : IEqualityComparer<DataRow> 4 { 5 public bool Equals(DataRow x, DataRow y) 6 { 7 if (x["a"].ToString() == y["a"].ToString() && 8 x["b"].ToString() == y["b"].ToString() && 9 x["c"].ToString() == y["c"].ToString() && 10 x["d"].ToString() == y["d"].ToString()) 11 { 12 return true; 13 } 14 else 15 { 16 return false; 17 } 18 } 19 20 public int GetHashCode(DataRow obj) 21 { 22 var HashCode = $"{obj["a"]}{obj["b"]}{obj["c"]}{obj["d"]}".GetHashCode(); 23 return HashCode; 24 } 25 26 }