3

我剛翻過this table的Sharepoint編碼標準

Alternatives to SPList.Items

請讓我知道在貧窮有什麼區別 - >在過去的5個項目更好。

+0

很抱歉,如果這是一個語言的問題,但你將不得不解釋你的問題更好的體重幾乎沒有任何意義的時刻。 –

+0

Hai marek ...對不起,如果我不清楚.... http://msdn.microsoft.com/en-us/librarybb687949%28v=office.12%29。aspx#WorkingWithFoldersLists請找到這個鏈接....你可以找到不同的b/w窮人和更好的表現.....我想知道什麼是最後5個差異... – Govind

+3

解釋是在原文章,正好在表格的上方:*訪問下表左列中列出的方法和屬性**會枚舉整個SPList.Items集合**,並導致較差的性能並對大型列表進行限制。 * –

回答

1

他所有這一切的原因都很簡單。當您編寫SPList.Items.Count以獲取項目總數時,SPList.Items將返回列表中所有項目的集合。 你不想要所有的項目,這可能是一個昂貴的行動。 通過編寫SPList.ItemCount,您可以確保只從數據庫中讀取一個數字,而不是所有項目。

從本質上講,這是對列表中的所有項目真的 - 你一般應該避免時,你可以使用整個集合對象(即SPList.Items或SPFolder.Files)。同樣,如果你多次使用它們,你應該使用局部變量來緩存它們。

以下是使用索引器的示例。假設我有一個Guid,並想獲得一個項目。

SPListItem項= list.Items [GUID];

看起來無辜不夠,但它實際上是一樣的:

SPListItemCollection項目= list.Items; SPListItem item = items [guid];

的一點是 - SharePoint功能(和C#,真的)不知道你接下來做什麼,或者你打算如何使用集合。你寫的那一刻。你已經做了一個緩慢的操作。

7

所有這一切的原因很簡單。當你寫SPList.Items.Count獲得項目的總數,SPList.Items返回所有項目的集合在列表中
你不想要所有的項目,這可能是一個昂貴的行動。
通過寫SPList.ItemCount,你要確保你只讀過從數據庫中,而不是所有的項目。

本質上,對於列表中的所有項目都是如此 - 當您可以時,通常應避免使用整個Collection對象(即SPList.ItemsSPFolder.Files)。同樣,如果你多次使用它們,你應該使用局部變量來緩存它們。

以下是使用索引器的示例。假設我有一個Guid,並想獲得一個項目。

SPListItem item = list.Items[guid]; 

看起來無辜不夠,但它實際上是一樣的:

SPListItemCollection items = list.Items; 
SPListItem item = items[guid]; 

的一點是 - SharePoint功能(和C#,真的)不知道你下一步打算做什麼,或者你將如何使用這個集合。你寫下的那一刻.Items已經做了一個緩慢的操作。

+0

感謝您的回覆kobi,所以這將適用於SPList.Items [System.Guid],SPList.Items [System.Int32],SPList.Items.GetItemById(System。 Int32)也?那最後一個......呢? – Govind

+0

@Govind - 是的! 'SPList.Items [System.Guid]'首先獲取整個集合 - 'SPList.Items',然後運行索引器:'[System.Int32]'。 – Kobi

+0

@Govind - 查看更新。哦,謝謝!還有這篇文章:http://blog.dynatrace.com/2009/01/11/the-wrong-way-to-iterate-through-sharepoint-splist-items/這很有趣,但他看起來像是在銷售產品。 – Kobi