C# 为什么';在这个linq查询中使用可为空的Guid是否有效?

C# 为什么';在这个linq查询中使用可为空的Guid是否有效?,c#,asp.net,linq,entity-framework,C#,Asp.net,Linq,Entity Framework,我有以下代码来查找树的根节点: Guid? currentNode = null; var root = db.RecursiveTrees.Where(x => x.ParentId == currentNode).ToList(); 此查询返回0个结果 如果运行此查询,将返回预期的行: var root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList(); 为什么第一个查询不起作用(使用最新版本的entit

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

Guid? currentNode = null; 
var root = db.RecursiveTrees.Where(x => x.ParentId == currentNode).ToList();
此查询返回0个结果

如果运行此查询,将返回预期的行:

var root = db.RecursiveTrees.Where(x => x.ParentId == null).ToList();
为什么第一个查询不起作用(使用最新版本的entity framework)

编辑:

解决方法:

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();     
列表根目录;
if(nodeid==null)
root=db.RecursiveTrees.Where(x=>x.ParentId==null.ToList();
其他的
root=db.RecursiveTrees.Where(x=>x.ParentId==newguid(nodeid)).ToList();

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

试试这个

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

谢谢-我将更改代码以避免在EF 6.1.3中仍然没有修复的可空GuidIt上进行过滤。如果它曾经被修复过,它将再次被破坏。从一个可为null的
HasValue
中检索
Value
将抛出异常。