LINQ consulta para encontrar el valor mínimo de una columna
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,
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