1

yield を使用してコレクションを構築する以下のコードがあります。

public IEnumerable<Comment> GetComments(
    IEnumerable<ContentItem> commentContentItems)
{

    foreach (var commentContentItem in commentContentItems)
    {
        var Comment = new Comment
            {
                CommentCreatedByName = commentContentItem.InitiatorName,
                CommentCreatedByID = commentContentItem.CreatedByID,
                ContentItemID = commentContentItem.ContentItemID,
                CommentDate = commentContentItem.CreatedDate
            };

        yield return Comment;
    }
}

アイテムが削除されているかどうかのチェックを開始したいのですが、削除されている場合は、削除されたアイテムがコレクションに追加されないように譲ります。

linq を使用して、次のようにセットを削減できることはわかっています。

foreach (var commentContentItem in commentContentItems.Where(x => !x.Deleted))

しかし、議論のために。たとえば、利回りの方がパフォーマンスが高い状況で、利回りを使用してこれを行うにはどうすればよいでしょうか。

例えば:

if (commentContentItem.Deleted)
{
    yield return null;
}
4

2 に答える 2

11

結果に削除されたアイテムが必要ないというのは正しいですか?yield returnその場合はしないでください。

if (!commentContentItem.Deleted)
    yield return Comment;
于 2013-09-12T09:46:53.807 に答える