LINQ-Abfrage den Minimalwert einer Spalte zu finden,
Frage
Ich habe eine Tabelle mit den folgenden Spalten
inspection_dt,
contact_dt,
description,
product_mod,
product_desc,
contact_nm,
history_id,
inspect_id,
history_type,
incident_product_id,
contact_history_id
würde ich LINQ verwenden, um eine generische Liste von Zeilen aus dieser Tabelle abzufragen. Die Wendung ist, dass ich den kleinsten (MIN) Wert von history_id will -. Und Mimik dieser SQL-Abfrage
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
Ich habe versucht, Schnipsel wie
var searchData = items
.GroupBy(i => new { i.history_id })
.Select(g => new { history = g.Min() })
.Distinct();
Aber immer noch alle durcheinander bekommen
ich stecken bleiben mit Funktionen wie MIN, MAX, etc, und die Gruppierung in LINQ und sind dankbar für jede Hilfe, die ich bekommen kann.
Danke,
Lösung
Wenn Sie die Abfrage vollständig nachahmen wollen, müssen Sie Gruppe mit den gleichen Spalten oder Felder, die Sie durch in der SQL-Gruppierung sind. Probieren Sie etwas wie
.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))
Andere Tipps
Sie können diesen Code unten versuchen.
Ich habe bemerkt, es erzeugt eine SQL-Kreuz beitreten, wenn ich es in Profiler sehen, aber ich denke, es tut, was Sie wollen, und Sie könnten in der Lage sein, es zu zwicken mehr.
var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();
Hope, das hilft