代码之家  ›  专栏  ›  技术社区  ›  Ahmed

何时在中支持Distinct(IEqualitComparer)尼伯内特,林肯?

  •  1
  • Ahmed  · 技术社区  · 15 年前

    这是一个快速的!

    我尝试过最新的v3.0.0alpha,但是仍然不支持distinct重载,但是支持无参数重载(使用默认的相等比较器)。有人知道什么时候会支持这个吗尼伯内特,林肯?此外,除了NHibernate,还有其他Linq提供商吗尼伯内特,林肯?


    感谢任何帮助!

    1 回复  |  直到 15 年前
        1
  •  2
  •   Mauricio Scheffer    15 年前

    class PersonEqualityComparer: IEqualityComparer<Person> {
      public bool Equals(Person p1, Person p2) {
        var cfg = ConfigurationManager.AppSettings["something"];
        if (SomeStaticClass.SomeMethod(cfg)) {
          return p1.Id == p2.Id;
        }
        return p1.Name == p2.Name;
      }
    
      public int GetHashCode(Person p) {
        return p.Id.GetHashCode();
      }
    }
    

    是的,这可能是一个可怕的实现,但可能而且完全有效。NHibernate如何将其转换为SQL?它不能,或者至少不能没有帮助,所以你需要 extend the NHibernate LINQ provider 告诉NHibernate怎么翻译。