C# 为什么StringComparison.InvariantCultureInoRecase不能用于此Db4o linq查询?
以下查询有效。当我用错误的大小写输入名称时,我得到了正确的结果C# 为什么StringComparison.InvariantCultureInoRecase不能用于此Db4o linq查询?,c#,.net,linq,db4o,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.ToL
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();
}
private static IObjectContainer db=db4ofatory.OpenFile(db4oPath);
公共静态IQueryable GetCompanyByName(字符串名称){
返回(来自公司c,单位为db)
其中c.Name.ToLowerInvariant()等于(Name.ToLowerInvariant())
选择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();
}
public静态IQueryable GetCompanyByName(字符串名){
返回(来自公司c,单位为db)
其中c.Name.Equals(Name,StringComparison.InvariantCultureInogoreCase)
选择c).AsQueryable();
}
为什么?LINQ表达式解析器可以自由地支持(或不支持)他们选择的任何一组操作。在LINQtoSQL和EF的情况下,如果他们被什么东西弄糊涂了,他们会抛出一个异常(我希望上面的内容也会被弄糊涂),但听起来Db4o只是说“没有匹配项”
Db40是否能够记录它执行的查询?也许它在做一些古怪的事情。。。但我们只能猜测…所以你也认为这是他们的事,而不是我的事。我总是先怀疑自己,因为我经常犯错;)