2012-01-09 2 views
2

부모 배열 필드가 int 인 범주 모델이 있습니까? 데이터 유형. 나는 이것을 달성하기 위해 노력하고있어 :Linq λ null-coalescing nullable int

WHERE 
    ISNULL(ParentID,0) == ParentCategoryID 

...하지만 LINQ에서 그것이 내가 을 적용 할 수 없습니다 말해 있기 때문에 어려움을 겪고 것 같다 ??은 null 허용 정수이므로 ParentID에 있습니다.

IList<Category> ChildCategories = AllCategoriesAsList 
    .Where(c => c.ParentID ?? 0 == ParentCategoryID) 
    .ToList(); 

나는 조금 붙어 있습니다. 이 같은

답변

4

뭔가 정말 직접 질문에 대답하지

IList<Category> ChildCategories = AllCategoriesAsList 
    .Where(c => (c.ParentID.HasValue ? c.ParentID.Value : 0) == ParentCategoryID) 
    .ToList(); 
+0

'HasValue'에 대해 알지 못했습니다. 환상적. 감사합니다 alex –

+0

@HvaFaen 당신은 환영합니다 – Alex

1

을하지만, ISNULL() in a Where filter를 사용하여

WHERE  ISNULL(ParentID,0) == ParentCategoryID 

WHERE (ParentId is NULL AND ParentCategoryId = 0) OR (ParentId = ParentCategoryId) 
로 다시 작성할 수 있습니다 테이블/인덱스 스캔으로 이어질 수 있습니다 수 일반적으로 더 나은 성능을 가져야하는

입니다. 마찬가지로 LINQ 등가물도 병합 문제를 피할 수 있습니다.

+0

나는 미래의 쿼리를 위해 그걸 가지고 갈 것입니다. 감사합니다 nonnb –

관련 문제