我有一个包含以下列的表
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的最小(MIN)值 - 并模仿这个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中进行分组,并感谢我能得到的任何帮助。
谢谢,
答案 0 :(得分:3)
如果要完全模仿查询,则需要按照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))
答案 1 :(得分:1)
您可以尝试以下代码。
我注意到当我在探查器中查看它时会生成一个SQL交叉连接,但我认为它可以实现您想要的功能,并且您可以对其进行更多调整。
var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct();
希望这有帮助