Linq to sql 使用int从Linq到SQL?使用空值

Linq to sql 使用int从Linq到SQL?使用空值,linq-to-sql,Linq To Sql,我在Linq到SQL查询中遇到一些问题 现在,如果我运行这个请求,一切都会正常运行,我会得到正确的结果(2行) 但是如果我做了以下操作,我只会得到一个空列表 var menu = new WikiMenu(); menu.ParentId = null; return _repository.GetMenus() .Where(x => x.ParentId == menu.ParentId && x.WikiId == 1)

我在Linq到SQL查询中遇到一些问题

现在,如果我运行这个请求,一切都会正常运行,我会得到正确的结果(2行)

但是如果我做了以下操作,我只会得到一个空列表

var menu = new WikiMenu();
menu.ParentId = null;
return  _repository.GetMenus()
                   .Where(x => x.ParentId == menu.ParentId && x.WikiId == 1)
                   .ToList();
但是,如果
menu.ParentId
是其他值,那么null就可以正常工作

这是模型菜单

public class WikiMenu
{
    public int? Id { get; set; }
    public int WikiId { get; set; }
    public int PageId { get; set; }
    public string Title { get; set; }
    public int Order { get; set; }
    public int? ParentId { get; set; }
    public List<WikiMenu> SubMenu { get; set; }
}

您可以尝试使用以下代码:

return _repository.GetMenus().  
    Where(x => object.Equals(x.ParentId, menu.ParentId) && x.WikiId == 1).ToList();
此代码段将强制Linq2SQL生成类似
其中[table0].[parentId]为NULL
而不是
其中[table0].[parentId]==NULL


希望这有帮助。

您可以尝试使用以下代码:

return _repository.GetMenus().  
    Where(x => object.Equals(x.ParentId, menu.ParentId) && x.WikiId == 1).ToList();
此代码段将强制Linq2SQL生成类似
其中[table0].[parentId]为NULL
而不是
其中[table0].[parentId]==NULL

希望这有帮助

return _repository.GetMenus().  
    Where(x => object.Equals(x.ParentId, menu.ParentId) && x.WikiId == 1).ToList();