Azure-Speichertabellen haben alle eine Timestamp-Spalte. Basierend auf der Dokumentation here können Sie aus einer Speichertabelle löschen, indem Sie eine Entität auswählen und dann löschen.Wie löscht man alle Objekte mit einem Zeitstempel, der mehr als 1 Tag alt ist, aus der Azure Storage Table?
Kann jemand eine Entität aus einer Speichertabelle basierend auf einem Datetime-Vergleich auf dem Timestamp-Wert mithilfe von Code löschen?
EDIT:
Basierend auf den Rat gegeben ich den folgenden Code geschrieben haben. Es wird jedoch eine Ausnahmefehler bei meinem Aufruf von table.ExecuteQuery (rangeQuery) ausgelöst. Irgendein Rat?
StorageCredentials creds = new StorageCredentials(logAccountName, logAccountKey);
CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
CloudTableClient client = account.CreateCloudTableClient();
CloudTable table = client.GetTableReference(LogTable);
TableQuery<CloudQuerySummary> rangeQuery = new TableQuery<CloudQuerySummary>()
.Where(TableQuery.GenerateFilterCondition("Timestamp", QueryComparisons.LessThan
, DateTime.Now.AddHours(- DateTime.Now.Hour).ToString()));
TableOperation deleteOperation;
// Loop through the results, displaying information about the entity.
foreach (CloudQuerySummary entity in table.ExecuteQuery(rangeQuery))
{
deleteOperation = TableOperation.Delete(entity);
table.Execute(deleteOperation);
}
EDIT 2
Hier ist der letzte Arbeits Code für jeden, der/Referenz zu kopieren wählt.
public void DeleteLogsNotFromToday()
{
StorageCredentials creds = new StorageCredentials(logAccountName, logAccountKey);
CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
CloudTableClient client = account.CreateCloudTableClient();
CloudTable table = client.GetTableReference(LogTable);
TableQuery<CloudQuerySummary> rangeQuery = new TableQuery<CloudQuerySummary>()
.Where(TableQuery.GenerateFilterConditionForDate("Timestamp", QueryComparisons.LessThan
, DateTime.Now.AddHours(-DateTime.Now.Hour)));
try
{
TableOperation deleteOperation;
// Loop through the results, displaying information about the entity.
foreach (CloudQuerySummary entity in table.ExecuteQuery(rangeQuery))
{
deleteOperation = TableOperation.Delete(entity);
table.Execute(deleteOperation);
}
}
catch (Exception ex)
{
throw;
}
}
siehe bearbeitete Antwort. –