为什么在这个linq查询中没有使用可以为空的Guid工作?

时间:2011-12-28 08:16:02

标签: 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();

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

修改

解决方法:

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 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:0)

试试这个

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