2010-03-29 27 views
0

les données comme ceci: fichier1 fichier2 AAAA lait AAAA rouge boîte bbbb bbbb stylo cccc rose je veux obtenir le résultat comme ceci: fichier1: AAAA bbbb cccc qui peut me dire comment faire en utilisant DB4objects en attente en ligne ....Comment utiliser la distincte sur les bases de données db4o

+0

Pouvez-vous fournir plus d'informations? Dans quel environnement, Java ou .NET? Distinct sur un champ ou un objet? – Gamlor

+0

.NET distinct sur un objet –

+0

comme ceci: les gens ont deux propriétés, l'une est le sexe l'autre est le nom, je veux le sexe distinct. Le résultat est 'homme' ou 'women'.using. Net in db4o merci –

Répondre

2

Pour autant que je sache, db4o n'a pas de support direct pour l'opération 'distincte'. Cependant, puisque vous utilisez le framework .NET, vous pouvez utiliser l'opération LINQ-Distinct sur votre résultat. Je suppose que vous utilisez .NET 3.5 et C#. Dis-moi quand j'ai tort.

Par exemple:

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

Cela renverra le résultat distinct de toutes les personne-objets. Il utilisera GetHashCode() et Equals() - Methods pour comparer les objets.

Si vous ne voulez pas utiliser une valeur par défaut égale comparaison, vous pouvez passer une IEqualityOperator instance à la méthode distincte:

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());