-1
我有以下的LINQ查詢,這需要大約65,000條記錄我的數據分組。有沒有什麼辦法可以進一步優化以縮短時間。通過性能優化的C#集合組
var grouped = (from T1 in dataCollection.trancollection
group T1 by new { T1.Name, T1.ExternalID, T1.AccountNumber, T1.Code, T1.Location, T1.Date, T1.CurrencyCode, T1.StatusName } into g
select new
{
Id = g.Key,
groupedDocs = g,
Amount = g.Sum(x => x.TranAmount),
USDAmt = g.Sum(x => x.USDTranAmount)
}).ToList();
該集合的數據通過另一個API調用提供。有沒有其他方法來提高性能?而我的收藏類型是IReadOnlyCollection <>
非常感謝您的幫助!
可以您可以通過更少的特性,也許組只是'ExternalID'? – Slai
我相當肯定這會導致你的ORM爲組密鑰做一個查詢,然後*每個組*一個查詢*(也稱爲N + 1問題),因爲你要求'groupedDocs = g' 。由於無論如何都要加載所有行,因此只需選擇需要的字段(進入組)並加上'TranAmount'和'USDTranAmount',然後在內存中進行分組,就可以更高效。 – Rob
你需要找出哪一點花了很多時間。調用API或LINQ。 因此,我們先從沒有LINQ的API獲取所有數據。 – hiule