如何在数据库DB4O上使用distinct

时间:2010-03-29 09:34:55

标签: database distinct db4o group-by

这样的数据: file1 file2 aaaa牛奶 aaaa红色 bbbb盒子 bbbb笔 cccc上涨 我想得到这样的结果: 文件1: AAAA BBBB CCCC 谁可以告诉我如何使用DB4objects 在线等待....

1 个答案:

答案 0 :(得分:2)

据我所知,db4o没有直接支持'distinct'操作。但是,由于您使用的是.NET框架,因此可以对结果使用LINQ-Distinct操作。我假设你使用的是.NET 3.5和C#。当我错了时告诉我。

例如:

  IObjectContainer db = // ...
  var persons = (from Person p in db
       select p).Distinct();

这将返回所有Person对象的不同结果。它将使用GetHashCode()和Equals() - 方法来比较对象。

如果您不想使用默认的相等比较,可以将IEqualityOperator实例传递给distinct方法:

    class PersonByNameEquality : IEqualityComparer<Person>
    {
        public bool Equals(Person x, Person y)
        {
            return x.Firstname.Equals(y.Firstname);
        }

        public int GetHashCode(Person obj)
        {
            return obj.Firstname.GetHashCode();
        }
    }

    // and then
    IObjectContainer db = //...
    var persons = (from Person p in db
                   select p).Distinct(new PersonByNameEquality());