2013-03-04 3 views
3

ASP.NET MVC의 메서드는 Expression<Func<TModel,Boolean>> (화면에 확인란 HTML 컨트롤 표시)을 예상하지만 내 멤버는 다음과 같습니다. Boolean?.Expression <Func <TModel, Boolean? >>을 Expression으로 변환 Func <TModel, Boolean >>

여기서는 nullfalse과 같기 때문에 선택하지 않은 HTML 확인란을 표시해야합니다.

Expression<Func<TModel,Boolean?>>에서 Expression<Func<TModel,Boolean>>으로 변환하는 방법은 어떻게 될까요? value = nullableValue.HasValue && nullableValue.Value?

그 결과는 Expression이 여전히 MemberExpression이어야한다는 것을 기억하십시오. 이것이 가능한지 궁금하게 생각합니다.

건배.

+1

nullable Boolean을 기본값으로 지정하려면 'nullableValue ??'구문을 사용하십시오. false'. '?? '는 값이 있으면 값을 사용하고, 그렇지 않으면 지정한 값을 사용합니다. –

+0

글쎄, 앱이 실제로 값을 지정하지 않습니다. HTML 템플릿을 생성하는 데만 클래스를 사용하지만 클래스의 인스턴스는 사용하지 않습니다. – vtortola

답변

1

경우이 값 속성을 acccessing 있습니다 (같은 int, bool 등) 당신은 Convert 작업을 수행하기위한 책임 UnaryExpression에 싸여 기본 MemberExpressionMemberExpression 아니라 UnaryExpression을받지 않습니다.

이것은 값 유형이 참조 유형이 아니며 null 값을 허용하지 않기 때문에 발생하는 것으로 보입니다. 당신이 점점 받아 들일 경우

UnaryExpression 당신은 다음과 같은 방법으로 작업을 수행 할 수 있습니다

Expression<Func<TModel, Boolean?>> source = ... 

var resultBody = Expression.Convert(source.Body, typeof(Boolean));  
var result = Expression.Lambda<Func<TModel, Boolean>>(resultBody, source.Parameters); 

당신이 도움이 될 수 유래 question을.

관련 문제