// list of all items from the set
        public static async Task <SelectList> ToSelectListAsync <TEntity>(this IQueryable <TEntity> set, Expression <Func <TEntity, object> > customOrderBySelector = null)
            where TEntity : class
        {
            if (IDNameObjectType <TEntity> .IsSimplifiable)
            {
                var list = await SelectListManager <TEntity> .SimpleINOQuery(set, customOrderBySelector).ToEntityListAsync();

                return(SelectListManager <SimpleIDNameObject> .FromList(list));
            }
            else
            {
                var list = await SelectListManager <TEntity> .Query(set, customOrderBySelector).ToEntityListAsync();

                return(SelectListManager <TEntity> .FromList(list));
            }
        }
        // selectedOnly == true - list of one only (selected) item
        // otherwise - list of all items from the set
        public static async Task <SelectList> ToSelectListAsync <TEntity>(this IQueryable <TEntity> set, object selectedID, bool selectedOnly, Expression <Func <TEntity, object> > customOrderBySelector = null)
            where TEntity : class
        {
            if (IDNameObjectType <TEntity> .IsSimplifiable)
            {
                var q = (selectedOnly)
                    ? SelectListManager <TEntity> .SimpleINOQuery(set, selectedID)
                    : SelectListManager <TEntity> .SimpleINOQuery(set, customOrderBySelector);

                return(SelectListManager <SimpleIDNameObject> .FromList(await q.ToEntityListAsync(), selectedID));
            }
            else
            {
                var q = (selectedOnly)
                    ? SelectListManager <TEntity> .Query(set, selectedID)
                    : SelectListManager <TEntity> .Query(set, customOrderBySelector);

                return(SelectListManager <TEntity> .FromList(await q.ToEntityListAsync(), selectedID));
            }
        }