您的位置:首页 > 其它

Linq实现DataTable动态去重复

2015-07-28 09:34 417 查看
本文介绍一种按字段动态对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();
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: