看起来像愚蠢的问题,但我只是不明白.
我的实体:
我的实体:
public class Page { public int Id { get; set; } //... public int? ParentId { get; set; } }
在控制器中:
db.Pages.First(x => x.ParentId == null);
按预期工作(返回一些元素).
但:
int? test = null; db.Pages.First(x => x.ParentId == test);
引发序列不包含任何元素
我错过了什么?
解决方法
我相信有些LINQ提供程序在null之间存在一种奇怪的现象.尝试:
var query = db.Pages.First(x => (test != null && x.ParentId == test) || (test == null && x.ParentId == null));
或者,针对不同情况使用不同的查询:
var query = test == null ? db.Pages.First(x => x.ParentId == null) : db.Pages.First(x => x.ParentId == test);
基本上这是因为sql将NULL视为不等于自身,因此:
WHERE X = Y
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。