【问题标题】:Nullable int not working as expected in LINQ (C#)Nullable int 在 LINQ (C#) 中无法按预期工作
【发布时间】:2011-04-12 18:41:49
【问题描述】:

以下按预期工作(LINQ to Entities):

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。这很容易解决,但这让我感到困惑。任何人都可以解释一下吗?

【问题讨论】:

标签: c# linq entity-framework linq-to-entities


【解决方案1】:

你肯定不是第一个观察到这种……有趣的……行为的人。

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

简而言之,很难处理不同的 null 表达方式。

【讨论】:

  • 谢谢。从您答案中的链接中,我找到了一个简单的解决方法:t.ParentId.Equals(parent)。但多么奇怪!我很高兴不只是我发疯了!
  • @James,我虽然这个解决方法只适用于 Linq to SQL 而不是 Linq to Entities... 它适用于 Linq to Entities 吗?
  • @zespri 不,我发布得太早了!它在 parent 为空时有效,但在其他情况下无效。我最终得到了 if (parent==null) ...
猜你喜欢
  • 2017-09-19
  • 2016-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-17
  • 2013-12-23
  • 2014-12-09
相关资源
最近更新 更多