Guest User

Untitled

a guest
Jun 19th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. Expression<Func<ReferencedEntity, bool>> expected = (ReferencedEntity referencedEntity) => foreignKeys.Contains(referencedEntity.Id);
  2. Expression<Func<ReferencedEntity, bool>> actual;
  3.  
  4. ParameterExpression entityParameter = Expression.Parameter(typeof(TReferencedEntity), "referencedEntity");
  5. MemberExpression memberExpression = Expression.Property(entityParameter, "Id");
  6. Expression convertExpression = Expression.Convert(memberExpression, typeof(object)); //This is becuase the memberExpression for Id returns a int.
  7.  
  8. //Expression containsExpression = Expression.Call(????
  9.  
  10. //actual = Expression.Lambda<Func<TReferencedEntity, bool>>(????, entityParameter);
  11.  
  12. /// <summary>
  13. ///
  14. /// </summary>
  15. /// <param name="foreignKeys"></param>
  16. /// <returns></returns>
  17. private Expression<Func<TReferencedEntity, bool>> BuildForeignKeysContainsPredicate(List<object> foreignKeys, string primaryKey)
  18. {
  19. Expression<Func<TReferencedEntity, bool>> result = default(Expression<Func<TReferencedEntity, bool>>);
  20.  
  21. try
  22. {
  23. ParameterExpression entityParameter = Expression.Parameter(typeof(TReferencedEntity), "referencedEntity");
  24. ConstantExpression foreignKeysParameter = Expression.Constant(foreignKeys, typeof(List<object>));
  25. MemberExpression memberExpression = Expression.Property(entityParameter, primaryKey);
  26. Expression convertExpression = Expression.Convert(memberExpression, typeof(object));
  27. MethodCallExpression containsExpression = Expression.Call(foreignKeysParameter
  28. , "Contains", new Type[] { }, convertExpression);
  29.  
  30. result = Expression.Lambda<Func<TReferencedEntity, bool>>(containsExpression, entityParameter);
  31.  
  32. }
  33. catch (Exception ex)
  34. {
  35. throw ex;
  36. }
  37.  
  38. return result;
  39. }
Add Comment
Please, Sign In to add comment