Inquiridor
Obter valores duplicados em um objeto dentro de uma list.

Pergunta
-
Olá pessoa.
Estou fazendo uma ferramenta do qual preciso tratar muita informação.
Vamos lá..
Primeiramente:
class product {
public string name { get; set; }
public string location { get; set; }
public ulong campoX { get; set; }
}Ai tenho: List<produts> productsList = new List<produts>();
Nesse List<produts> vou adicionar 60 milhões de informações.
Depois preciso listar todos os produtos da List<> que estão com os valores campoX duplicados.
Preciso de todos eles...
Fiz assim:
var result = productsList..Select(x => x).GroupBy(x => x.campoX).Where(x => x.Count() > 1).Select(x => x);Depois listo isso em um foreach(var aaa in result) { .... }
Porem, utiliza TODA a memoria livre da maquina (mais de 6gb) e demora cerca de 20 minutos ou mais para executar isso...
Existe alguma maneira de fazer isso mais rápido e consumindo pouca memória?
OBS: O exe esta sendo compilado em 64bits para não dar memory out.
Alguem possui uma sugestão de como fazer isso de outro jeito?
Obrigado.
Todas as Respostas
-
Olá Henrique,
Tudo bem?
Uma pergunta: Ordenar essa lista pelo campoX é muito custoso?
Dependendo da resposta podemos preparar uma solução para o seu problema.
[]s!
Fernando Henrique Inocêncio Borba Ferreira
Microsoft MVP - Data Platform Development
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique
Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil -
-
Olá Henrique,
Realmente é uma quantidade mto grande de dados.
Vc poderia compartinhar a estrutura deste objeto que possui 60 milhões de instâncias?
Vc tem esses dados em um banco de dados?
Não seria mais facil ordenar e agrupar esses dados na base de dados?
Vc utilizará todos os dados deste objeto? Não seria interessante apenas trazer para memória os dados que realmente irá utilizar?
Preciso fazer alguns testes antes de lhe indicar alguma solução...
[]s!
Fernando Henrique Inocêncio Borba Ferreira
Microsoft MVP - Data Platform Development
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique
Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil -
Olá Henrique,
Alguma evolução nessa thread?
[]s!
Fernando Henrique Inocêncio Borba Ferreira
Microsoft MVP - Data Platform Development
while(alive){ this.WriteCode(); }
Blog: http://ferhenriquef.com/
Twitter: @ferhenrique
Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil