2011-01-07 74 views
0

的最小值我有以下的列LINQ查詢發現一列

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分組並希望任何幫助我可以得到。

謝謝,

回答

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

你可以試試下面的代碼。

我注意到,當我在Profiler中查看它時,它會生成一個SQL交叉連接,但我認爲它可以實現你想要的功能,而且你可能可以對它進行更多的調整。

var searchData = items.Select(x => new {x.inspection_dt,x.contact_dt, history= items.Min(j => j.history_id)}).Distinct(); 

希望這有助於