linq 优化: var q1 = from a in DbGetIQueryableStoredEnergy_History join b in DbGetIQueryableEquipment_Info on aEquipmentId equals bId into tmp1 from bb
使用方法链来优化LINQ查询可以提高查询的性能和可读性。下面是对给定LINQ查询的优化方法链版本:
var q1 = Db.GetIQueryable<StoredEnergy_History>() .Join(Db.GetIQueryable<Equipment_Info>(), a => a.EquipmentId, b => b.Id, (a, b) => new { a, b }) .Join(Db.GetIQueryable<Equipment_UseType>(), ab => ab.b.EquipmentUseTypeId, c => c.Id, (ab, c) => new { ab.a, ab.b, c }) .Where(x => !x.a.Deleted && !x.b.Deleted && x.b.IsEnable && !x.c.Deleted && x.c.IsEnable && x.b.EnterpriseId == enterpriseId && x.c.UseTypeName == EquipmentUseType.总储能.ToString() && x.a.RecordTime.Year == searchTime.Year) .Select(x => new { x.a.RecordTime, x.a.ThisChargingCapacity, x.a.ThisDischargeCapacity }) .GroupBy(x => new { x.RecordTime.Year, x.RecordTime.Month, x.RecordTime.Day }) .Select(g => new { g.Key.Year, g.Key.Month, g.Key.Day, ThisDischargeCapacity = g.Sum(p => p.ThisDischargeCapacity), ThisChargingCapacity = g.Sum(p => p.ThisChargingCapacity) });
这个方法链版本与原始查询相同,但使用方法链的方式可以使查询更加简洁和容易理解
原文地址: https://www.cveoy.top/t/topic/hDy6 著作权归作者所有。请勿转载和采集!