为什么在这个linq查询中不能使用可空的Guid ?

本文关键字:Guid 不能 linq 查询 为什么 | 更新日期: 2023-09-27 18:18:59

我有以下代码来查找树的根节点:

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

这个查询返回0个结果。

如果我运行这个查询,我得到预期的行返回:

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

为什么第一个查询不工作(使用最新版本的实体框架)?

编辑:

处理:

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();     

为什么在这个linq查询中不能使用可空的Guid ?

这是LINQ中处理可空值类型时的一个已知错误。根据相关的Connect问题,这将在下一个版本中修复。

try this

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