-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