2012-06-03 2 views
1

Как я могу получить последние 100 записей из WADLogsTable Упорядочено по дате?Последние записи от WadLogsTable

Я пытался сделать это с этим куском кода, но он не работает

   var query = (from entity in tsc.CreateQuery<LogsObject>("WADLogsTable") 
         where entity.PartitionKey.CompareTo(startTime.ToUniversalTime().Ticks.ToString("D19")) >= 0 
         orderby entity.EventTickCount descending 
         select entity); 

Где TSC является TableServiceContext.

Я могу получить записи, но меня интересуют журналы референтов.

Спасибо,

ответ

0

Windows Azure хранения таблицы не поддерживает сортировку, поэтому объекты всегда возвращаются отсортированные по PartitionKey + RowKey. Но я подозреваю, что записи журнала уже находятся в обратном хронологическом порядке. Не так ли?

[EDIT] Видимо, они не являются. :-)

+0

Спасибо за сообщение. записи журнала не находятся в обратном хроном порядке. – GoodSpeed

+0

Как отметил Стив, в настоящее время хранение таблиц не поддерживает сортировку. Если ваши записи не находятся в обратном хронологическом порядке, вы должны сначала загрузить записи на свой локальный компьютер, а затем сделать сортировку локально. Возможно, вам захочется представить предложение о функции на http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting. –

0
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ATCommon.DiagnosticConfig); 
    CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient(); 
    TableServiceContext serviceContext = cloudTableClient.GetDataServiceContext(); 
    IQueryable<WadLogEntity> traceLogsTable = serviceContext.CreateQuery<WadLogEntity>("WADLogsTable"); 
    var selection = from row in traceLogsTable where row.PartitionKey.CompareTo("0" + DateTime.UtcNow.AddHours(hours).Ticks) >= 0 select row; 
    //var selection = from row in traceLogsTable where row.PartitionKey.CompareTo("0" + DateTime.UtcNow.AddMinutes(-5.0).Ticks) >= 0 select row; 
    CloudTableQuery<WadLogEntity> query = selection.AsTableServiceQuery<WadLogEntity>(); 
    IEnumerable<WadLogEntity> output = query.Execute(); 
return output.OrderByDescending(s => s.Timestamp).Take(100).ToList(); 
Смежные вопросы