ado.net linq小技巧

导入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     }
原文地址:https://www.cnblogs.com/mmclog/p/14841443.html