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 回答