使用自定义IEqualityComparer从DataTable返回重复项

时间:2015-06-17 10:58:15

标签: c# linq compare

更新:我可以找到重复项。 但是,我正在测试包含该字符的重复项:'*' 它找不到它们。 任何想法为什么? 我尝试的重复路径是:* .exe

我有两个数据表。每个数据表都有两列:路径和类型。 重复项基于路径。

以下是我的自定义实现:IEqualityComparer

internal class RuleComparer : IEqualityComparer<DataRow>
{
    #region IEqualityComparer<string> Members
    public bool Equals(DataRow x, DataRow y)
    {
        return (x["path"] as string).ToUpperInvariant().Equals((y["path"] as string).ToUpperInvariant());
    }

    public int GetHashCode(DataRow obj)
    {
        return obj.Field<string>("path").ToUpperInvariant().GetHashCode();
    }
    #endregion
}

这就是我所说的:

public IEnumerable<string> Duplicates
{
    get
    {
        return (datatable1.AsEnumerable()
            .Intersect(datatable2.AsEnumerable(), new RuleComparer())
            .Select(dupe => dupe.Field<string>("path"))).ToList();
    }
}

但是没有找到重复的内容。任何人都能看到我做错了什么?在通过代码调试时,调用Equals方法。

提前致谢

0 个答案:

没有答案