2012-11-15 5 views
1

리플렉션을 통해 람다 식을 작성하는 데 도움이되는 다음 코드가 있습니다. 그러나 비교하려고 할 때 Date 내 값을 전체 DateTime 스탬프로 변환합니다. 짧은 데이트 만 비교할 수 있도록 내 술어를 작성하려면 어떻게해야합니까?짧은 날짜로 동적 람다 선언문 만들기

System.Reflection.PropertyInfo propInfo = typeof(T).GetProperty(property); 
Type propertyType = propInfo.PropertyType; 
if (Utilities.IsNullableType(propertyType)) 
{ 
    propertyType = Nullable.GetUnderlyingType(propertyType); 
} 
ParameterExpression propAlias = Expression.Parameter(typeof(T), alias); 
MemberExpression left = Expression.Property(propAlias, property); 
ConstantExpression right = Expression.Constant(Convert.ChangeType(value, propertyType)); 
BinaryExpression comparer = BuildComparisonExpression(left, right, comparison); 
return Expression.Lambda<Func<T, bool>>(comparer, propAlias); 

나는 그것이 DateTime에 문자열을 변환하는 Convert.ChangeType을 알고,하지만 난 item => item.DateToCheck == 1/1/2012을 할 때 무엇을 나는 돌아 item => item.DateToCheck == 1/1/2012 12:00:00AM 얻을.

답변

3

Convert.ChangeType(...) 세 번째 인수는 이라는 정확한 목적으로 이미 존재하는 IFormatProvider을 전달하려고합니다.