Я пытаюсь получить запись из базы данных, используя Entity Framework и LINQ.Он работает в основном так, как ожидалось, но из-за ошибки с оператором WHERE я не могу понять.
var nodeId = "001";
//This works and returns the record I am looking for
var nodeDisplayName = ("#" + nodeId);
var filteredNodes = dbContext.Node.Where(n => n.DisplayName == nodeDisplayName).ToList();
//This does not work and returns 0 results
var filteredNodes2 = dbContext.Node.Where(n => n.DisplayName == ("#" + nodeId )).ToList();
Я бы ожидал, что два варианта будут вести себя точно так же, и, похоже, еслиЯ запускаю их в списке в памяти.Но при работе с сущностью / базой данных они ведут себя по-разному.Я могу легко исправить ошибку, просто используя первый метод, но я хотел бы понять, что вызывает разницу в поведении.
РЕДАКТИРОВАТЬ
Итак, сгенерированный SQLзапросы выглядят так:
SELECT `n`.`id`, `n`.`display_name`, `n`.`reg_tms`
FROM `tablename`.`node` AS `n`
WHERE `n`.`display_name` = '#001'
SELECT `n`.`id`, `n`.`display_name`, `n`.`reg_tms`
FROM `tablename`.`node` AS `n`
WHERE `n`.`display_name` = ('#' + '001')
Так что все проясняется.Я предполагал, что Entity Framework объединит строки перед генерацией запроса.