質問
次の列のあるテーブルがあります
inspection_dt,
contact_dt,
description,
product_mod,
product_desc,
contact_nm,
history_id,
inspect_id,
history_type,
incident_product_id,
contact_history_id
LINQを使用して、このテーブルから行の一般的なリストを照会します。ひねりは、history_idの最小(最小)値が必要であり、この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
私はようなスニペットを試しました
var searchData = items
.GroupBy(i => new { i.history_id })
.Select(g => new { history = g.Min() })
.Distinct();
しかし、それでもすべてが台無しになります
Min、Maxなどの機能を使用して、Linqでのグループ化を使用して立ち往生し、私が得ることができる助けに感謝します。
ありがとう、
解決
クエリを完全に模倣したい場合は、SQLでグループ化しているのと同じ列またはフィールドでグループ化する必要があります。ようなものを試してみてください
.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))
他のヒント
以下のこのコードを試すことができます。
プロファイラーで見るとSQLクロス結合が生成されることに気付きましたが、それがあなたが望むことをしていると思います。
var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();
お役に立てれば
所属していません StackOverflow