Como eu implemento o IEnumerable?

Eu tenho uma classe que contém um número estático de objetos. Essa classe precisa ser frequentemente 'comparada' com outras classes que serão objetos de lista simples.

public partial class Sheet
{
 public Item X{ get; set; }
 public Item Y{ get; set; }
 public Item Z{ get; set; }
}

os itens obviamente não serão "X" "Y" "Z", esses são apenas nomes genéricos, por exemplo. O problema é que, devido à natureza do que precisa ser feito, uma lista não funcionará; mesmo que tudo aqui seja do tipo Item. É como uma lista de verificação de coisas muito específicas que precisam ser testadas no código e no tempo de execução.

Isso funciona muito bem; não é problema meu. Meu problema está iterando. Por exemplo, eu quero fazer o seguinte ...

List<Item> UncheckedItems = // Repository Logic Here.

UncheckedItems contém todos os itens disponíveis; e o CheckedItems é a instância da classe Sheet. CheckedItems conterá itens que foram movidos de Desmarcado para Verificado; no entanto, devido à natureza do sistema de armazenamento, os itens movidos para Marcado NÃO PODEM SER REMOVIDO de Desmarcado. Eu simplesmente quero percorrer "Marcado" e remover qualquer coisa da lista em Desmarcado que já esteja em "Marcado".

Então, naturalmente, isso seria assim com uma lista normal.

foreach(Item item in Unchecked)
{
 if( Checked.Contains(item) )
 Unchecked.Remove( item );
}

Mas como "Planilha" não é uma 'Lista', não posso fazer isso. Então, eu queria implementar o IEnumerable para que eu pudesse. Alguma sugestão? Eu nunca implementei o IEnumerable diretamente antes e estou bastante confuso sobre por onde começar.

questionAnswers(1)

yourAnswerToTheQuestion