private async Task <T> GetAsync <T>(TableQuery query, string searchFilter)
        {
            var tableClient = account.CreateCloudTableClient();
            var table       = tableClient.GetTableReference(CollectionName);
            var outVal      = (T)Activator.CreateInstance(typeof(T));
            var content     = outVal.GetType().GetGenericArguments().Length > 0 ? outVal.GetType().GetGenericArguments()[0] : null;

            TableContinuationToken token = null;

            do
            {
                var results = await table.ExecuteQuerySegmentedAsync(query, token);

                token = results.ContinuationToken;
                foreach (var entity in results.Results)
                {
                    if (outVal.GetType().GetMethod("Add") != null && content != null)
                    {
                        var val = AzureFormatHelpers.RecastEntity(entity, content);
                        outVal.GetType().GetMethod("Add").Invoke(outVal, new[] { val });
                    }
                    else
                    {
                        return((T)AzureFormatHelpers.RecastEntity(entity, typeof(T)));
                    }
                }
            } while (token != null);

            return(outVal);
        }
        public T Post <T>(T record)
        {
            if (record is ITableEntity)
            {
                //just send the object in
                var table = PostAsync(record).Result;
            }
            else
            {
                //work it into the correct format.
                var recordProps = record.GetType().GetProperties();
                var obj         = AzureFormatHelpers.BuildTableEntity(recordProps, record);

                TableResult table = PostAsync((ITableEntity)obj).Result;
            }
            return(record);
        }