private void Pesquisar() { var lstLimite = ACA_EventoLimiteBO.GetSelectByCalendario(VS_cal_id); var tblTipoEvento = ACA_TipoEventoBO.SelecionaTipoEvento(0, Guid.Empty); var lstTipoPeriodo = ACA_TipoPeriodoCalendarioBO.SelecionaTipoPeriodoCalendarioPorCalendario(VS_cal_id, ApplicationWEB.AppMinutosCacheLongo); int tpc_idRecesso = ACA_ParametroAcademicoBO.ParametroValorInt32PorEntidade(eChaveAcademico.TIPO_PERIODO_CALENDARIO_RECESSO, __SessionWEB.__UsuarioWEB.Usuario.ent_id); string tcp_nomeRecesso = string.Empty; if (tpc_idRecesso > 0) { ACA_TipoPeriodoCalendario tpc = new ACA_TipoPeriodoCalendario { tpc_id = tpc_idRecesso }; ACA_TipoPeriodoCalendarioBO.GetEntity(tpc); tcp_nomeRecesso = tpc.tpc_nome; } var source = lstLimite.Join(tblTipoEvento.Rows.Cast <DataRow>(), evl => evl.tev_id, tev => Convert.ToInt32(tev["tev_id"]), (evl, tev) => new sLimite() { tev_nome = tev["tev_nome"].ToString(), tpc_nome = (evl.tpc_id > 0 ? (evl.tpc_id == tpc_idRecesso ? tcp_nomeRecesso : lstTipoPeriodo.First(tpc => tpc.tpc_id == evl.tpc_id).tpc_nome) : string.Empty), tev_id = evl.tev_id, evl_id = evl.evl_id, evl = evl }) .GroupBy(evl => string.Format("{0}{1}{2}", evl.tev_nome, (string.IsNullOrEmpty(evl.tpc_nome) ? string.Empty : " - "), evl.tpc_nome)) .Select(grp => new { TipoEventoBimestre = grp.Key, Limites = grp.ToList() }) .OrderBy(grp => grp.TipoEventoBimestre); rptLimitesCalendario.DataSource = source; rptLimitesCalendario.DataBind(); }