以下查询有效。当我输入错误的套管名称时,我得到了正确的结果。
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();
}
为什么?
答案 0 :(得分:2)
LINQ表达式解析器几乎可以自由地支持(或不支持)他们选择的任何操作集。在LINQ-to-SQL和EF的情况下,如果他们被某些东西弄糊涂,他们会抛出一个异常(我希望上面的内容属于这个) - 但听起来Db4o只是说“没有匹配”。 / p>
Db40是否能够记录它执行的查询?也许它正在做一些时髦的事......但我们只能猜测......