매개 변수가 null인지 아닌지는 모르겠지만 다음과 같은 방식으로 사용하고 싶습니다. Param! = null 인 경우 Param가 null의 경우는 id를 와 비교해, null와 비교한다. 그런Linq : 존재하지 않는 값을 비교해도 예외가 발생하지 않아야합니다.
뭔가 : 나는 C에서 뭔가 얻을려고으로 ParamCat가 곧 null의 경우
var c = from cat in context.Categories
where ParamCat != null && cat.ParentId == ParamCat.Id
||
ParamCat == null && cat.ParentId == null
select c;
(예를 c.Count를 들어()) 그것은 예외가 발생합니다.
보통 어떤 종류의 조건을 사용하면 특히 AND를 사용하면 조건이 실패하는 즉시 비교가 중지됩니다. 예를 들어이 코드는 예외를 발생시키지 않습니다.
if (ParamCat != null && cat.ParentId == RaramCat.Id)
{
}
그렇다면 위의 linq 코드가 예외를 throw하는 이유는 무엇입니까? (널 참조)
덕분에 당신은 그 순서대로 평가하기 위해 컴파일러를 얻기 위해 그룹에 괄호를 사용하여 &&
표현을 필요
편집 권한이 없지만 "select c"가 아닌 "select cat"이어야합니다. – lukiffer
@lukiffer : 실제로 그렇습니다. 그것이 유효성을 검사하지 않고 OP의 표현을 복사하여 붙여 넣기 위해 얻은 것입니다! –
여기 내 작업 코드입니다 : var cc = context.Categories에서 orderby c.CategoryName where (ParentCategory! = null && c.CategoryParentId == 55) || (ParentCategory! = null && c.CategoryParentId == ParentCategory.CategoryId) // ParentCategory.CategoryId select c; 그 결과는 동일합니다. 왜 그럴 수 없습니까 ?? – mimic