0

IEnumerable<treenode>ノードとしてtreenodeコレクションがあります。treenode.guidすべての要素を反復せずにノードから直接コレクションを作成する方法はありますか?

例えば:

guidcollection nodeguids = nodes.somemethod();
4

2 に答える 2

3

答えはそうではありません-各ノードからの情報が必要な場合は、明らかにノードのコレクションを反復処理する必要があります。ただし、次のようなことができます。

IEnumerable<Guid> nodeguids = nodes.Select(n => n.Id);

このようにして、少なくとも手動で反復を実行する必要はありません。の実装にはコレクションのすべての要素に対する反復が含まれますが、コレクションをどこかSelectで使用しようとするときに実行されます。nodeguids

于 2012-10-29T12:52:19.767 に答える
0

LINQはレイジーイテレータを使用します。したがって、このようなコレクションを作成できます...

IEnumerable<TreeNode> myCollection = GetTreeNodes();
IEnumerable<Guid> guidCollection = myCollection.Select(tn => tn.Guid);

guidCollectionは、何らかの方法で繰り返され、カウントされ、実行されるまで入力されません。

古い学校に行くこともできます。

function IEnumerable<Guid> GetIdsFromCollection(TreeNode collection)
{
    foreach (var item in collection)
        yield return item;
}
于 2012-10-29T12:52:01.883 に答える