Olá Pessoal!
Eu tenho uma aplicação, onde estou usando EF Code First. Eu tenho uma class no EF que representa um molde, esse molde tem 3 principais propiedades, largura, altura e coluna.
Na minha aplicação o usuário posta os valores do molde, e eu pesquiso no banco... Como estou usando Code-First, eu retorno o dbset e faço a pesquisa via Linq, utilizando as Where afins. Atualmente eu uso:
WHERE(i => i.largura == x && i.altura == y && i.colunas == z);
Também tenho um processo parecido, para achar os moldes próximos, para isso eu faço a pesquisa de uma range de +- 5...
O processo funciona, mas para fins de estudo gostaria de fazer um método de pesquisa mais hardcore. Queria fazer essa pesquisa utilizando árvore binária (ou qualquer outro search method que seja mais rápido, idéias são bem vindas).
Atualmente eu retornei a lista de moldes, e ordenei por Largura, depois Altura e depois Colunas, Utilizando classes que implementam a interface IComparer<> (nota na minha app os moldes se chamam knife, é complicado explicar, não vou entrar em detalhes
^^). Segue exemplo :
KnifeComparerByWidth auxSortByWidth = new KnifeComparerByWidth();
KnifeComparerByHeight auxSortByHeight = new KnifeComparerByHeight();
KnifeComparerByColumns auxSortByColumns = new KnifeComparerByColumns();
var knives = context.Knives.ToList();
knives.Sort(auxSortByWidth);
knives.Sort(auxSortByHeight);
knives.Sort(auxSortByColumns);
Ai estão os moldes, ordenados por largura, depois alturas, depois colunas... Agora vem a dúvida, o que fazer agora ? Qual melhor meio de pesquisar através dos parâmetros altura, largura e colunas ? Toda pesquisa que fiz pela internet só encontrei artigos
onde a pesquisa era feita por BinarySearch, baseada em um objeto como parâmetro, retornando a index dele na list, mas não é isso que eu quero ...
Espero ter ficado claro! Vlws!
Ao infinito e além!