public static async Task <IEnumerable <T> > TakePageAsync <T>(this IAzureTableStorage <T> tableStorage, string partitionKey, int pageNo, int itemsInPage, Func <T, bool> filter = null) where T : class, ITableEntity, new()
        {
            var result = new List <T>();

            var fromNo = -itemsInPage * pageNo;

            await tableStorage.EnumerateDataByChunksAsync(partitionKey, chunk =>
            {
                foreach (var item in chunk.Where(itm => filter == null || filter(itm)))
                {
                    if (fromNo >= 0)
                    {
                        result.Add(item);
                        if (result.Count >= itemsInPage)
                        {
                            return(false);
                        }
                    }
                    fromNo++;
                }

                return(true);
            });

            return(result);
        }