0
Linq-to-SQLクエリに問題がありますintを使用したLinq-to-SQL?
このリクエストを実行すると、すべて正常に動作し、正しい結果が返されます(2行)。
return _repository.GetMenus()
.Where(x => x.ParentId == null && x.WikiId == 1)
.ToList();
しかし、私が次のことをすれば、空のリストが得られます。
var menu = new WikiMenu();
menu.ParentId = null;
return _repository.GetMenus()
.Where(x => x.ParentId == menu.ParentId && x.WikiId == 1)
.ToList();
menu.ParentId
が他の場合はnullですが、正常に動作します。
これはモデルWikiMenu
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; }
}
私はこれをどのように修正することができますか?このコードスニペットは、 WHERE [table0].[parentId] IS NULL
いうよりWHERE [table0].[parentId] == NULL
のようなものを生成するLinq2SQLを強制します
return _repository.GetMenus().
Where(x => object.Equals(x.ParentId, menu.ParentId) && x.WikiId == 1).ToList();
:
は、これまでのところ私は、あなたは以下のコードを使用しようとすることができ、この小さなハック
if(menu.ParentId == null)
return _repository.GetMenus()
.Where(x => x.ParentId == null && x.WikiId == site.Id)
.ToList();
else
return _repository.GetMenus()
.Where(x => x.ParentId == menu.ParentId && x.WikiId == site.Id)
.ToList();