2009-03-25 8 views
3

Выполняется следующий запрос. Я получаю правильный результат, когда я ввожу имя с неправильным корпусом.Почему StringComparison.InvariantCultureIgnoreCase не работает с этим запросом 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(); 
    } 

Почему?

ответ

2

Анализаторы выражения LINQ в значительной степени могут поддерживать (или нет) любой набор операций, которые они выбирают. В случае LINQ-to-SQL и EF они будут генерировать исключение, если они будут смущены чем-то (и я ожидал бы, что выше это попадет в это), но похоже, что Db4o просто говорит «нет совпадений».

Имеет ли Db40 возможность регистрировать запросы, которые он выполняет? Может быть, он делает что-то напуганное ... но мы можем только догадываться ...

+0

Так вы тоже думаете, что это что-то на их стороне, а не мое. Я, как правило, всегда сомневаюсь в себе, потому что чаще всего я ошибаюсь;) –

 Смежные вопросы

  • Нет связанных вопросов^_^