簡體   English   中英

將Linq查詢復制到列表

[英]Copying Linq query to List

'Read RESX file and returns a List(Of ResXDataNode)
Dim allNodes = getResourceData()

'Linq Query to extract the nodes
Dim movedNodes = From rowNodes In allNodes _
                 Where rowNodes.Comment = oldRowNumber _
                 Select rowNodes

請問:

Dim nodesToMove As List(Of ResXDataNode) = New List(Of ResXDataNode)

For Each movedNode As ResXDataNode In movedNodes
    nodesToMove.Add(movedNode)
Next

要么

Dim nodesToMove As List(Of ResXDataNode) = movedNodes.ToList

提供節點的兩個單獨副本? 還是List和Linq查詢仍在引用相同的數據?

它們仍將引用相同的對象-不會創建任何額外的ResXDataNode對象。

順便說一句,調用movedNodes.ToList()會比手動添加每個對象更簡單...

現在完全有可能,每次您遍歷movedNodes它都可能創建新對象-這實際上取決於它在做什么,而您尚未顯示它是如何創建的。 但是復制到列表不會創建新對象。

如果ResXDataNode是引用類型,則它們仍將引用相同的對象,如果它是值類型,則將創建副本並將其添加到新列表中。

編輯: ResXDataNode是引用類型,因此新列表仍將引用相同的對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM