2009-03-25 9 views
3

La requête suivante fonctionne. Je reçois le résultat correct lorsque j'entre le nom avec un mauvais boîtier.Pourquoi StringComparison.InvariantCultureIgnoreCase ne fonctionne-t-il pas avec cette requête linq Db4o?

private static IObjectContainer db = Db4oFactory.OpenFile(db4oPath); 

    public static IQueryable<Company> GetCompaniesByName(string name) { 
     return (from Company c in db 
       where c.Name.ToLowerInvariant().Equals(name.ToLowerInvariant()) 
       select c).AsQueryable(); 
    } 

La requête suivante avec le même paramètre (fondamentalement le même test unitaire) ne renvoie aucun résultat. Marquez la seule différence est la clause where.

public static IQueryable<Company> GetCompaniesByName(string name) { 
     return (from Company c in db 
       where c.Name.Equals(name, StringComparison.InvariantCultureIgnoreCase) 
       select c).AsQueryable(); 
    } 

Pourquoi?

Répondre

2

Les analyseurs d'expression LINQ sont à peu près libres de prendre en charge (ou non) tout ensemble d'opérations qu'ils choisissent. Dans le cas de LINQ-to-SQL et EF, ils lèveront une exception s'ils sont déroutés par quelque chose (et je m'attendrais à ce que ce qui précède tombe dedans) - mais il semble que Db4o dise simplement "pas de correspondance".

Est-ce que Db40 peut enregistrer les requêtes qu'il exécute? Peut-être que ça fait quelque chose de génial ... mais on ne peut que deviner ...

+0

Alors vous aussi pensez que c'est quelque chose à leur côté, pas le mien. J'ai tendance à toujours douter d'abord parce que le plus souvent je fais les erreurs;) –

Questions connexes