2011-04-12 26 views
5

下按预期工作(LINQ到实体):可空的int未按预期在LINQ(C#)

var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == null select new { t.Title, t.Id }).ToList(); 

但是,下列不返回任何内容:

int? parent = null; 
var topics = (from t in ctx.Topics where t.SubjectId == subjectId && t.ParentId == parent select new { t.Title, t.Id }).ToList(); 

Topic.ParentId是可空的int。这很容易解决,但这让我感到困惑。任何人都可以摆脱光线吗?

+0

Jon Skeet来救援! ;-) – 2011-04-12 18:44:08

+0

同样的问题在这里:http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework/4262617#4262617 – Slauma 2011-04-12 18:58:07

回答

4

你绝对不是第一个观察这个......有趣......行为的人。

http://connect.microsoft.com/data/feedback/details/607404/entity-framework-and-linq-to-sql-incorrectly-handling-nullable-variables

总之,这是难以处理表达空不同的方式。

+1

谢谢。从答案中的链接中,我找到了一个简单的解决方法:t.ParentId.Equals(parent)。但有多奇怪!我很高兴这不仅仅是我疯了! – James 2011-04-12 18:59:09

+0

@詹姆斯,我虽然这项工作只适用于Linq to SQL,而不是Linq to Entities ...它是否适用于Linq to Entities for你? – 2011-04-13 04:44:44

+0

@zespri不,我发布太快了!它在父项为空时有效,但在其他情况下不起作用。我结束了if(parent == null)... – James 2011-04-13 16:49:42