requête LINQ trouver la valeur minimale d'une colonne
Question
J'ai une table avec les colonnes suivantes
inspection_dt,
contact_dt,
description,
product_mod,
product_desc,
contact_nm,
history_id,
inspect_id,
history_type,
incident_product_id,
contact_history_id
Je voudrais utiliser LINQ pour interroger une liste générique de lignes de ce tableau. La torsion est que je veux le plus petit (MIN) de valeur history_id -. Et mimétique cette requête 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
J'ai essayé des extraits comme
var searchData = items
.GroupBy(i => new { i.history_id })
.Select(g => new { history = g.Min() })
.Distinct();
Mais toujours obtenir tout foiré
Je reste bloqué à l'aide des fonctions comme MIN, MAX, etc, et le regroupement en LINQ et apprécierait toute aide que je peux obtenir.
Merci,
La solution
Si vous voulez mimique la requête complètement, vous devez groupe par les mêmes colonnes ou des champs que vous groupant par votre SQL. Essayez quelque chose comme
.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))
Autres conseils
Vous pouvez essayer ce code ci-dessous.
Je l'ai remarqué génère une croix SQL rejoignent quand je l'ai vue dans profileur mais je pense qu'il fait ce que vous voulez et vous pourriez être en mesure de modifier plus.
var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();
Hope this helps