Почему в этом запросе linq не работает обнуляемый Guid? - PullRequest
5 голосов
/ 28 декабря 2011

У меня есть этот код, чтобы найти корневой узел дерева:

Guid? currentNode = null; 
var root = db.RecursiveTrees.Where(x => x.ParentId == currentNode).ToList();

Этот запрос возвращает 0 результатов.

Если я выполню этот запрос, я получу ожидаемую строку:

var root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList();

Почему не работает первый запрос (с использованием последней версии платформы сущностей)?

EDIT:

Обходной путь:

List<RecursiveTree> root;
if (nodeid == null)
   root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList();
else
   root = db.RecursiveTrees.Where(x => x.ParentId == new Guid(nodeid)).ToList();     

Ответы [ 2 ]

10 голосов
/ 28 декабря 2011

Это известная ошибка в LINQ to Entities при работе с обнуляемыми типами значений. Согласно соответствующей проблеме Connect , это будет исправлено в следующей версии.

0 голосов
/ 28 декабря 2011

попробуйте

Guid? currentNode = null; 
var root = db.RecursiveTrees.Where(x => x.ParentId == currentNode.Value).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...