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,

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top