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,

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top