Насколько я знаю, db4o не имеет прямой поддержки операции «отчетливо». Однако, поскольку вы используете .NET-framework, вы можете использовать операцию LINQ-Distinct для вашего результата. Я предполагаю, что вы используете .NET 3.5 и C #. Скажи мне, когда я ошибаюсь.
Например:
IObjectContainer db = // ...
var persons = (from Person p in db
select p).Distinct();
Это вернет отличный результат для всех объектов Person. Он будет использовать методы GetHashCode () и Equals () для сравнения объектов.
Если вы не хотите использовать сравнение по умолчанию, вы можете передать экземпляр IEqualityOperator в отдельный метод:
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());