2011-01-18 2 views
0

와 나는 Linq에 - 투 - SQL 쿼리 I이 요청을 실행하면 이제 모든 것이 잘 실행int를 사용하는 Linq-to-SQL? null 값

몇 가지 문제가 발생하고 난 다시 올바른 결과 (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 일뿐입니다.

이것은 내가이 문제를 해결할 수있는 방법 모델

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; } 
} 

WikiMenu

은?

은 지금까지 나는이 작은 해킹

했을
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(); 

답변

3

다음과 같은 코드를 사용하려고 할 수 있습니다

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

이 코드는 Linq2SQL이 WHERE [table0].[parentId] IS NULL보다는 WHERE [table0].[parentId] == NULL 같은 것을 생성하는 강제를 .

희망이 도움이됩니다.