Commit 0fae5e6f96151f2b8d90319c6d10346e9af5e1b1
1 parent
e97f24a6
refactor: 优化查询逻辑和代码结构
- 合并多行查询条件,提升代码可读性 - 精简分页查询和关联数据查询的代码 - 确保查询性能的同时,保持功能一致性
Showing
2 changed files
with
8 additions
and
22 deletions
netcore/src/Modularity/Extend/NCC.Extend/LqKdKdjlbService.cs
| ... | ... | @@ -3339,18 +3339,12 @@ namespace NCC.Extend.LqKdKdjlb |
| 3339 | 3339 | .WhereIF(!string.IsNullOrEmpty(input.SourceType), pxmx => pxmx.SourceType == input.SourceType); |
| 3340 | 3340 | |
| 3341 | 3341 | // 2. 通过 EXISTS 子查询筛选关联字段(在分页前筛选,确保分页准确) |
| 3342 | - baseQuery = baseQuery | |
| 3343 | - .WhereIF(!string.IsNullOrEmpty(input.MemberName), pxmx => | |
| 3344 | - SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == pxmx.MemberId && x.Khmc != null && x.Khmc.Contains(input.MemberName)).Any()) | |
| 3345 | - .WhereIF(!string.IsNullOrEmpty(input.MemberPhone), pxmx => | |
| 3346 | - SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == pxmx.MemberId && x.Sjh == input.MemberPhone).Any()) | |
| 3347 | - .WhereIF(!string.IsNullOrEmpty(input.ItemType), pxmx => | |
| 3348 | - SqlFunc.Subqueryable<LqXmzlEntity>().Where(x => x.Id == pxmx.Px && x.Fl4 == input.ItemType).Any()); | |
| 3342 | + baseQuery = baseQuery.WhereIF(!string.IsNullOrEmpty(input.MemberName), pxmx => SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == pxmx.MemberId && x.Khmc != null && x.Khmc.Contains(input.MemberName)).Any()) | |
| 3343 | + .WhereIF(!string.IsNullOrEmpty(input.MemberPhone), pxmx => SqlFunc.Subqueryable<LqKhxxEntity>().Where(x => x.Id == pxmx.MemberId && x.Sjh == input.MemberPhone).Any()) | |
| 3344 | + .WhereIF(!string.IsNullOrEmpty(input.ItemType), pxmx => SqlFunc.Subqueryable<LqXmzlEntity>().Where(x => x.Id == pxmx.Px && x.Fl4 == input.ItemType).Any()); | |
| 3349 | 3345 | |
| 3350 | 3346 | // 3. 先分页查询主表数据(查询实体类,提高性能) |
| 3351 | - var pagedData = await baseQuery | |
| 3352 | - .OrderBy(sidx + " " + sort) | |
| 3353 | - .ToPagedListAsync(input.currentPage, input.pageSize); | |
| 3347 | + var pagedData = await baseQuery.OrderBy(sidx + " " + sort).ToPagedListAsync(input.currentPage, input.pageSize); | |
| 3354 | 3348 | |
| 3355 | 3349 | // 4. 批量查询关联数据 |
| 3356 | 3350 | var itemIds = pagedData.list.Select(x => x.Id).ToList(); |
| ... | ... | @@ -3362,10 +3356,7 @@ namespace NCC.Extend.LqKdKdjlb |
| 3362 | 3356 | var memberDict = new Dictionary<string, (string Name, string Phone)>(); |
| 3363 | 3357 | if (memberIds.Any()) |
| 3364 | 3358 | { |
| 3365 | - var members = await _db.Queryable<LqKhxxEntity>() | |
| 3366 | - .Where(x => memberIds.Contains(x.Id)) | |
| 3367 | - .Select(x => new { x.Id, x.Khmc, x.Sjh }) | |
| 3368 | - .ToListAsync(); | |
| 3359 | + var members = await _db.Queryable<LqKhxxEntity>().Where(x => memberIds.Contains(x.Id)).Select(x => new { x.Id, x.Khmc, x.Sjh }).ToListAsync(); | |
| 3369 | 3360 | memberDict = members.ToDictionary(x => x.Id, x => (x.Khmc ?? "", x.Sjh ?? "")); |
| 3370 | 3361 | } |
| 3371 | 3362 | |
| ... | ... | @@ -3373,10 +3364,7 @@ namespace NCC.Extend.LqKdKdjlb |
| 3373 | 3364 | var activityDict = new Dictionary<string, string>(); |
| 3374 | 3365 | if (activityIds.Any()) |
| 3375 | 3366 | { |
| 3376 | - var activities = await _db.Queryable<LqPackageInfoEntity>() | |
| 3377 | - .Where(x => activityIds.Contains(x.Id)) | |
| 3378 | - .Select(x => new { x.Id, x.ActivityName }) | |
| 3379 | - .ToListAsync(); | |
| 3367 | + var activities = await _db.Queryable<LqPackageInfoEntity>().Where(x => activityIds.Contains(x.Id)).Select(x => new { x.Id, x.ActivityName }).ToListAsync(); | |
| 3380 | 3368 | activityDict = activities.ToDictionary(x => x.Id, x => x.ActivityName ?? ""); |
| 3381 | 3369 | } |
| 3382 | 3370 | |
| ... | ... | @@ -3384,10 +3372,7 @@ namespace NCC.Extend.LqKdKdjlb |
| 3384 | 3372 | var projectDict = new Dictionary<string, string>(); |
| 3385 | 3373 | if (projectIds.Any()) |
| 3386 | 3374 | { |
| 3387 | - var projects = await _db.Queryable<LqXmzlEntity>() | |
| 3388 | - .Where(x => projectIds.Contains(x.Id)) | |
| 3389 | - .Select(x => new { x.Id, x.Qt2 }) | |
| 3390 | - .ToListAsync(); | |
| 3375 | + var projects = await _db.Queryable<LqXmzlEntity>().Where(x => projectIds.Contains(x.Id)).Select(x => new { x.Id, x.Qt2 }).ToListAsync(); | |
| 3391 | 3376 | projectDict = projects.ToDictionary(x => x.Id, x => x.Qt2 ?? ""); |
| 3392 | 3377 | } |
| 3393 | 3378 | ... | ... |