4

次のクエリが機能します。大文字と小文字を間違えて名前を入力すると、正しい結果が返されます。

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

なんで?

4

1 に答える 1

2

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

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

于 2009-03-25T14:52:40.117 に答える