Linq实现DataTable动态去重复

来源:互联网 发布:java初级软件工程师 编辑:程序博客网 时间:2024/05/22 23:54
本文介绍一种按字段动态对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();    }}



0 0
原创粉丝点击