绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
关于join IEqualityComparer 查询的问题
2019-09-23 16:02:35
public class EqualityComparer123 : IEqualityComparer<ClassA>
    {
        Func<ClassA, ClassA, bool> pred;
        public EqualityComparer123(Func<ClassA, ClassA, bool> pred)
        {
            this.pred = pred;
        }

        public bool Equals(ClassA x, ClassA y)
        {
            //return x.id == y.id;
            return pred(x, y);
        }

        public int GetHashCode(ClassA obj)
        {
            return base.GetHashCode();
        }
    }

    public class TEqualityComparer<T> : IEqualityComparer<T>
    {
        Func<T, T, bool> pred;

        public TEqualityComparer(Func<T, T, bool> pred)
        {
            this.pred = pred;
        }

        public bool Equals(T x, T y)
        {
            return pred(x, y);
        }

        public int GetHashCode(T obj)
        {
            return obj.GetHashCode();
        }
    }

类有:

public class ClassA
    {
        public int id { set; get; }
        public string name { set; get; }
    }

代码:

var ca = new List<ClassA>();
ca.Add(new ClassA() { id = 1, name = "nima" });
ca.Add(new ClassA() { id = 2, name = "tama" });

var cb = new List<ClassA>();
cb.Add(new ClassA() { id = 1, name = "nima2" });
cb.Add(new ClassA() { id = 3, name = "tama2" });

var Compare = new EqualityComparer123((x, y) => { return x.id == y.id; });
var query = ca.Join(cb, x => x, y => y, (x, y) => new { CA = x, CB = y }, Compare);
var Compare3 = new TEqualityComparer<ClassA>((x, y) => { return x.id == y.id; });

var query3 = ca.Join(cb, x => x, y => y, (x, y) => new { CA = x, CB = y }, Compare3);

其中query1能够查询出数据,而query3却查询不出数据,望解惑。。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

IT知识联盟
创建时间:2019-07-05 15:30:45
分享收集到的大小知识点
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

栈主、嘉宾

查看更多
  • 王超
    栈主

小栈成员

查看更多
  • ?
  • youou
  • gamebus
  • chinacc
戳我,来吐槽~