// This magic is courtesy of this StackOverflow post. // https://stackoverflow.com/questions/38316519/replace-parameter-type-in-lambda-expression // I made some tweaks to adapt it to our needs - @haacked public static Expression <Func <TTarget, bool> > Convert <TSource, TTarget>( this Expression <Func <TSource, bool> > root) { var visitor = new ParameterTypeVisitor <TSource, TTarget>(); return((Expression <Func <TTarget, bool> >)visitor.Visit(root)); }
public static Func <TTarget, TConst> Convert <TSource, TTarget, TConst>(Expression <Func <TSource, TConst> > root) { var visitor = new ParameterTypeVisitor <TSource, TTarget>(); var expression = (Expression <Func <TTarget, TConst> >)visitor.Visit(root); return(expression?.Compile()); }
public IEnumerable <DalLot> GetByPredicateMany(Expression <Func <DalLot, bool> > expression) { var visitor = new ParameterTypeVisitor <DalLot, Lot>(expression); var expr = visitor.Convert(); var lots = _dbContext.Set <Lot>().Where(expr); return(lots.Select(lot => new DalLot() { Id = lot.LotId, IsBlocked = lot.IsBlocked, CategoryName = lot.Category.CategoryName, CategoryRefId = lot.CategoryRefId, IsConfirm = lot.IsConfirm, Discription = lot.Discription, BlockReason = lot.BlockReason, LotName = lot.LotName, SellerRefId = lot.SellerRefId, EndDate = lot.EndDate, IsSold = lot.IsSold, SellerEmail = lot.Seller.Email, SellerLogin = lot.Seller.Login, StartDate = lot.StartDate, StartingBid = lot.StartingBid })); }
public DalCategory GetByPredicate(Expression<Func<DalCategory, bool>> expression) { var visitor = new ParameterTypeVisitor<DalCategory, Category>(expression); var expr = visitor.Convert(); var category = _dbContext.Set<Category>().FirstOrDefault(expr); var dalCategory = category?.ToDalCategory(); return dalCategory; }
public DalCategory GetByPredicate(Expression <Func <DalCategory, bool> > expression) { var visitor = new ParameterTypeVisitor <DalCategory, Category>(expression); var expr = visitor.Convert(); var category = _dbContext.Set <Category>().FirstOrDefault(expr); var dalCategory = category?.ToDalCategory(); return(dalCategory); }
public DalUser GetByPredicate(Expression<Func<DalUser, bool>> expression) { var visitor = new ParameterTypeVisitor<DalUser, User>(expression); var expr = visitor.Convert(); var user = _dbContext.Set<User>().FirstOrDefault(expr); var dalUser = user?.ToDalUser(); if (dalUser == null) { return null; } dalUser.Roles = _roleRepository.GetRolesByUserId(user.UserId); return dalUser; }
public DalUser GetByPredicate(Expression <Func <DalUser, bool> > expression) { var visitor = new ParameterTypeVisitor <DalUser, User>(expression); var expr = visitor.Convert(); var user = _dbContext.Set <User>().FirstOrDefault(expr); var dalUser = user?.ToDalUser(); if (dalUser == null) { return(null); } dalUser.Roles = _roleRepository.GetRolesByUserId(user.UserId); return(dalUser); }
public IEnumerable<DalLot> GetByPredicateMany(Expression<Func<DalLot, bool>> expression) { var visitor = new ParameterTypeVisitor<DalLot, Lot>(expression); var expr = visitor.Convert(); var lots = _dbContext.Set<Lot>().Where(expr); return lots.Select(lot => new DalLot() { Id = lot.LotId, IsBlocked = lot.IsBlocked, CategoryName = lot.Category.CategoryName, CategoryRefId = lot.CategoryRefId, IsConfirm = lot.IsConfirm, Discription = lot.Discription, BlockReason = lot.BlockReason, LotName = lot.LotName, SellerRefId = lot.SellerRefId, EndDate = lot.EndDate, IsSold = lot.IsSold, SellerEmail = lot.Seller.Email, SellerLogin = lot.Seller.Login, StartDate = lot.StartDate, StartingBid = lot.StartingBid }); }