Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

214
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda