Я пытаюсь найти объекты (Tag
ы) в базе данных по их Name
собственности, где важно, чтобы игнорировать регистр (Когда database
ищутся и база данных содержит тег с именем Database
, что нужно вернуть). Сейчас мой код выглядит следующим образом:Сравнить строки без учета регистра
public IEnumerable<db.Tag> FindByNames(IEnumerable<string> tagNames)
{
return this.DatabaseContext.Tags
.Where(tag => tagNames.Contains(tag.Name));
}
Очевидно, что этот вопрос чувствителен к регистру. Я попытался предоставить StringComparer.OrdinalIgnoreCase
в качестве сравнения с методом Contains
, но получил предупреждение во время выполнения, что выражение не может быть переведено и будет выполняться в коде, а не в базе данных (я не помню точное сообщение, я отредактирую как только я вернусь на свою машину разработки). Я могу жить с этим, если это необходимо, но было бы неплохо узнать, как сделать базу данных в этом случае. Является ли это возможным?
Пожалуйста, см (http://meta.stackexchange.com/questions/19190/should-questions-include-tags-in-their [ "Должны ли вопросы включают„метки“в их названиях?"] - названия), где консенсус «нет, они не должны»! Кроме того, вам может потребоваться пересмотреть операцию «Содержит», так как это будет иметь линейную (или худшую) производительность. Если коллекция содержит много элементов, вставка в временную таблицу с индексом и выполнение объединения может быть опция. –