Selecionando itens de uma lista para obter uma soma
Eu tenho uma lista de itens que possui valores numéricos e preciso obter uma soma usando esses itens. Preciso da sua ajuda para criar esse algoritmo. Abaixo, há um exemplo que descreve meu problema, escrito em C #:
int sum = 21;
List<Item> list = new List<Item>();
list.Add(new Item() { Id = Guid.NewGuid(), Value = 3 });
list.Add(new Item() { Id = Guid.NewGuid(), Value = 5 });
list.Add(new Item() { Id = Guid.NewGuid(), Value = 12 });
list.Add(new Item() { Id = Guid.NewGuid(), Value = 3 });
list.Add(new Item() { Id = Guid.NewGuid(), Value = 2 });
list.Add(new Item() { Id = Guid.NewGuid(), Value = 7 });
List<Item> result = // the items in the list that has the defined sum.
Nota: Não tenho restrição no número de itens no resultado.