/// <summary> /// Liefert die mit den aktuellen Einstellungen gefilterte und sortierte Menge zurück /// </summary> /// <param name="sortType"></param> /// <returns></returns> public IQueryable <TEntityView> selectSorted(string sortType) { try { int entityCount = selectCount(""); if (entityCount > 0) { var views = new List <TEntityView>(entityCount); foreach (var entity in sort(filter(EntityCollection))) { views.Add(CreateView(entity)); } return(views.AsQueryable()); } else { return((new List <TEntityView>()).AsQueryable()); } } catch (Exception ex) { throw BoFilterAndSortEfEntitiesBaseException.Create("selectSorted", ex); } }
/// <summary> /// Liefert die Anzahl der Datensätze, die nach der Filterung im Ergebnis verbleiben /// </summary> /// <param name="sortType"></param> /// <returns></returns> public int selectCount(string sortType) { try { return(filter(EntityCollection).Count()); } catch (Exception ex) { throw BoFilterAndSortEfEntitiesBaseException.Create("selectCount", ex); } }
/// <summary> /// Implementiert das Sortieren nach beliebiger Spalte für die Objektdatasource /// </summary> /// <param name="tab"></param> /// <returns></returns> public IQueryable <TEntity> sort(IQueryable <TEntity> tab) { if (string.IsNullOrEmpty(_sortColname)) { _sortColname = _defaultSortCol; } if (tab == null) { return(null); } if (tab.Count() == 0) { return(tab); } if (string.IsNullOrEmpty(_sortColname)) { // Fall: keine Sortierung erwünscht return(tab); } else if (typeof(TEntityView).GetProperty(_sortColname) != null) { // Fall: Die Spalte stammt aus der aktuellen View // Namen der Eigenschaft einer EntityView auf die Eigenschaft eines zugrundeliegenden Entity abbilden string Colname = mapPropertyToColName(typeof(TEntityView), _sortColname); // Sortieren bezüglich abgeleiteter Spalten in den Views IQueryable <TEntity> tabff; if (sortByDerivat(tab, Colname, _sortDesc, out tabff)) { return(tabff); } // Wenn die Spalte keine abgeleitete Spalte ist, dann sortieren nach den tatsächlichen Spalten return(OrderFunc <TEntity>(tab, Colname, _sortDesc)); } throw BoFilterAndSortEfEntitiesBaseException.Create("sort", null); }