2009-03-25 14 views
3

次のクエリが機能します。私は間違ったケーシングで名前を入力するときに正しい結果を返します。StringComparison.InvariantCultureIgnoreCaseがこのDb4o linqクエリで機能しないのはなぜですか?

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

同じパラメータ(基本的に同じ単体テスト)の次のクエリは結果を返しません。唯一の違いはwhere句です。

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

なぜですか?

答えて

2

LINQ式パーサーは、選択した操作のセットをサポートする(またはしない)のはかなり自由です。 LINQ-to-SQLとEFの場合、何かが混乱すると例外がスローされますが、これは上記に該当すると思いますが、Db4oは単に「一致しない」と言っているようです。

Db40には実行するクエリを記録する機能がありますか?たぶんそれはファンキーな何かをしている...しかし、我々は推測することができます...

+0

あなたはあまりにも自分の側ではなく、私のものではないと思う。私は間違いをしているよりも頻繁に自分自身をまず疑う傾向があります;) –