Pregunta

Tengo una tabla con las siguientes columnas

inspection_dt,
contact_dt,
description,
product_mod,
product_desc,
contact_nm,
history_id,
inspect_id,
history_type,
incident_product_id,
contact_history_id

Me utilizar LINQ para consultar una lista genérica de filas de esta tabla. El giro es que quiero que el valor mínimo (MIN) de history_id -. E imitar esta consulta SQL

SELECT DISTINCT
    inspection_dt,
    contact_dt,
    description,
    product_mod,
    product_desc,
    contact_nm,
    MIN(history_id) AS history_id,
    inspect_id,
    history_type,
    incident_product_id,
    contact_history_id
FROM
    myTable
GROUP BY
    inspection_dt,
    contact_dt,
    description,
    product_mod,
    product_desc,
    contact_nm,
    inspect_id,
    history_type,
    incident_product_id,
    contact_history_id

He intentado fragmentos como

var searchData = items
    .GroupBy(i => new { i.history_id })
    .Select(g => new { history = g.Min() })
    .Distinct();

Pero aún así obtener todos en mal estado

se queda bloqueado el uso de funciones como MIN, MAX, etc, y agrupando en LINQ y agradecería cualquier ayuda que pueda conseguir.

Gracias,

¿Fue útil?

Solución

Si desea imitar la consulta por completo, es necesario agrupar por las mismas columnas o campos que estés agrupación por en su SQL. Pruebe algo como

.GroupBy(item => 
      new 
      {
          item.inspection_dt,
          item.contact_dt,
          item.description,
          item.product_mod,
          item.product_desc,
          item.contact_nm,
          item.inspect_id,
          item.history_type,
          item.incident_product_id
      }
     )
.Select(g => g.Min(item => item.history_id))

Otros consejos

Se podría probar este código de abajo.

he notado que genera una cruz de SQL se unen cuando veo que en el perfilador, pero creo que hace lo que quiere y usted podría ser capaz de ajustar más.

var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top