Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
LINQ: devuelve datos de la lista 2 ocurrencias

Tengo una lista de int llamada "motor_list" = 2, 3, 5, 3, 8, 5, 5, 9, 8 (Lista 2)

 (3 = 2 times in the list) (5 = 3 times)

Tengo una tabla (Elemento), cuya fila de contenido "ItemId, Nombre, Fecha, Ubicación", y solo contiene 2 datos:

(ItemId) = 3 and 5. (List 1)

 var data = _context.Item.Where(x => motor_list.Contains(x.ItemId));

Usando el código anterior, solo obtengo dos datos que obviamente son correctos técnicamente,

ahora quiero obtener datos, pero de acuerdo con la ocurrencia de motor_list (Lista 2), y no el de la tabla de elementos.

Quiero decir que quiero obtener algo como:

 ItemId 3 should pull 2 times the same data, and ItemId 5 should pull 3 times.
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Prueba este código

 List<int> list1 = new List<int>() { 3, 5 }; List<int> list2 = new List<int>() { 2, 3, 5, 3, 8, 5, 5, 9, 8 }; var data = list2.GroupBy(x => x).Where(a => list1.Contains(a.Key)); var result= data.Select(g => $"ItemId {g.Key} should pull {g.Count()} times").ToList(); foreach (var item in result) { Console.WriteLine(item); }
over 4 years ago · Santiago Trujillo Relatório

0

Use join para devolver exactamente los elementos en motor_list .

 var data = motor_list .Join(_context.Item, left => left, right => right.ItemId, (left, right) => new { items = right });

o un poco más lejos

 var data = _context.Item.ToList(); var result = lst.Select(x => new { item = data.Where(a => a.ID == x).FirstOrDefault() }).Where(a=>a.item != null).ToList();
over 4 years ago · Santiago Trujillo Relatório

0

No estoy seguro de lo que quiere decir con "ItemId 3 debe extraer 2 veces los mismos datos" . Parece que desea el recuento de cada ItemId en motor_list, o desea que los elementos duplicados se devuelvan en los resultados.

Así es como puede lograr cualquiera de los dos:

 class Item { public int ItemId { get; set; } } static void Main(string[] args) { List<Item> contextItems = new List<Item> { new Item { ItemId = 3 }, new Item { ItemId = 5 } }; var motor_list = new List<int> { 2, 3, 5, 3, 8, 5, 5, 9, 8 }; // To get the count of each contextItem in motor_list: var itemCount = contextItems .Select(contextItem => motor_list.Count(motorId => motorId == contextItem.ItemId)) .ToList(); // result: { 2, 3 } // To get duplicate items for each contextItem in motor_list var items = motor_list .Where(motorId => contextItems.Any(contextItem => contextItem.ItemId == motorId)) .ToList(); // result: { 3, 5, 3, 5, 5 } }
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda