internal static Expression IsTopPledger( ParameterExpression parm, CMSDataContext Db, int days, string top, CompareType op, bool tf) { if (Db.CurrentUser == null || Db.CurrentUser.Roles.All(rr => rr != "Finance")) return Expressions.CompareConstant(parm, "PeopleId", CompareType.Equal, 0); var mindt = Util.Now.AddDays(-days).Date; var r = Db.TopPledgers(top.ToInt(), mindt, DateTime.Now).ToList(); var toppledgers = r.Select(g => g.PeopleId).ToList(); Expression<Func<Person, bool>> pred = p => toppledgers.Contains(p.PeopleId); Expression expr = Expression.Convert(Expression.Invoke(pred, parm), typeof(bool)); if (!(op == CompareType.Equal && tf)) expr = Expression.Not(expr); return expr; }