为什么StringComparison.InvariantCultureIgnoreCase不能与此Db4o linq查询一起使用?

时间:2009-03-25 14:47:04

标签: c# .net 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();
    }

以下具有相同参数的查询(基本上是相同的单元测试)不返回任何结果。标记唯一的区别是where子句。

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

为什么?

1 个答案:

答案 0 :(得分:2)

LINQ表达式解析器几乎可以自由地支持(或不支持)他们选择的任何操作集。在LINQ-to-SQL和EF的情况下,如果他们被某些东西弄糊涂,他们会抛出一个异常(我希望上面的内容属于这个) - 但听起来Db4o只是说“没有匹配”。 / p>

Db40是否能够记录它执行的查询?也许它正在做一些时髦的事......但我们只能猜测......