2011-04-07 37 views
0

我有一個在我的容器中有以下名稱的blob列表在容器中獲取最後一個Azure Blob

例如, 物品1 ITEM2 項目3 item9 item10 item12 item45

我想要得到的第一個和最後一滴,在這種情況下是物品1和item45

但是當我使用cloudblobclient.cloudblobdirectory.listblobs。最後,item9被退回給我,而不是我想要的。從列表中獲得最後一項(45)的最佳方法是什麼?

只能想到在整個列表中運行,然後爲每個項目獲取字符「項目」後的數字,並將該數字與先前的高或低進行比較。由於前4個字符是固定的,我將結合「項目」和higherCnt:

for each blobitem in listblobs 
    iCurrCnt = numeric(blobitem.uri.absolutepath.substring(4)) 
    if iCurrCnt > iHigherCnt then 
    iHigherCnt = iCurrCnt 

因此那是一滴最後(item45):

strHighestCntFileName = "item" + iHigherCnt 

是否有另一種方法做這個?當項目列表增長到數千時,對性能的擔憂。我只對第一個和最後一個感興趣。謝謝!

+0

會是什麼標準,用於判定第一個和最後一滴?它是按照上面例子中的名稱命名還是可以更改?是否可以假定第一個blob是第一個添加的,最後一個blob是最後添加的那個? – 2011-04-07 12:47:18

+2

你可以改變blob的命名方式嗎?使用integer.ToString(「D8」)進行零填充將爲您提供item00000001 item0000002等,然後您可以按字母順序排序以獲得正確的結果http://msdn.microsoft.com/en-us/library/dd260048.aspx – AndyElastacloud 2011-04-07 13:03:05

+0

是的,決定第一個和最後一個blob的標準就像基於單詞「item」之後的數值所示的示例。不需要,可以先添加最後一個blob(例如45),並且可以最後添加第一個blob(例如1)。 – codingnoob 2011-04-07 13:39:25

回答

1

我認爲有以下幾種方式可以實現這事要

  • 獲取存在於容器中所有Blob的列表,然後過濾器斑點。

  • 列出存在於容器中的斑點時使用blob前綴。因此,如果您有第一個和最後一個blob名稱的概念,那麼您可以在blob前綴中使用它,這會返回與指定的blob前綴匹配的blob列表。

希望這會有所幫助。

問候, 阿米特耆那教 www.cerebrata.com