我有一個主 - 細節表,我想要獲得主連接的列表,其中一些字段中的細節是最大的。 例如我有一個名爲Document的表,並且還有一個名爲Revision的子表。我想要獲得文檔連接的修訂列表,其中修訂的字段最大爲 ? 一種解決方案是:在c#中使用max和linq一起使用#
using (ProcurementDataContext dc = new ProcurementDataContext())
{
var temp = from ddr in dc.E_DesignDocumentRevisions
group ddr by ddr.DesignDocumentID into g
select new { MaxRevision = g.Max(x => x.Revision), g.Key };
var result = from t in temp
join ddr in dc.E_DesignDocumentRevisions
on new { DesignDocumentID = t.Key, Revision = t.MaxRevision } equals new { ddr.DesignDocumentID, ddr.Revision }
join dd in dc.E_DesignDocuments
on ddr.DesignDocumentID equals dd.ID
where dd.DesignDocumentTypeID == DesignDocumentTypes.MR
select new { ddr.ID, dd.DocumentNumber };
foreach (var item in result)
{
dic.Add(item.ID, item.DocumentNumber.ToString());
}
}
我如何能做到這一點的只有一個查詢?
坦克對您有所幫助。你是對的,但我發現了一個偉大的方式與 非常小的查詢:VAR的結果=由新{ddr.DesignDocumentID,DDR在db.E_DesignDocumentRevisions組DDR DDR。 E_DesignDocument.DocumentNumber} into g select new {MaxRevision = g.Max(x => x.Revision),g.Key.DesignDocumentID,g.Key.DocumentNumber};當我們在Group by子句中使用來自某些表(多於一個)的文件時,linq會將它們加入到生成的查詢中。坦克再次 – 2010-02-23 10:45:52