0

像这样的数据:file1 file2 aaaa milk aaaa red bbbb box bbbb pen cccc rose 我想要得到这样的结果: file1: aaaa bbbb cccc 谁能告诉我如何使用 DB4objects 在线等待....

4

1 回答 1

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-instance 传递给 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());
于 2010-03-30T11:48:41.803 回答