Skip to content

Commit 8b4818f

Browse files
committed
feat(table): 减少linq迭代器对象的创建,避免Enumerable.Any处于嵌套循环中
1 parent 21238ea commit 8b4818f

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

src/BootstrapBlazor/Components/Table/Table.razor.Toolbar.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,7 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
467467
/// 获得/设置 各列是否显示状态集合
468468
/// </summary>
469469
private List<ColumnVisibleItem> VisibleColumns { get; } = [];
470+
private HashSet<string> VisibleColumnNames { get; set; } = [];
470471

471472
/// <summary>
472473
/// 获得当前可见列集合
@@ -475,8 +476,7 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
475476
public IEnumerable<ITableColumn> GetVisibleColumns()
476477
{
477478
// 不可见列
478-
var items = VisibleColumns.Where(i => i.Visible);
479-
return Columns.Where(i => !i.GetIgnore() && items.Any(v => v.Name == i.GetFieldName()) && ScreenSize >= i.ShownWithBreakPoint);
479+
return Columns.Where(i => ScreenSize >= i.ShownWithBreakPoint && !i.GetIgnore() && VisibleColumnNames.Contains(i.GetFieldName()));
480480
}
481481

482482
private bool GetColumnsListState(ColumnVisibleItem item) => VisibleColumns.Find(i => i.Name == item.Name) is { Visible: true } && VisibleColumns.Where(i => i.Visible).DistinctBy(i => i.Name).Count(i => i.Visible) == 1;

src/BootstrapBlazor/Components/Table/Table.razor.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1278,6 +1278,8 @@ private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable
12781278
}
12791279
VisibleColumns.Clear();
12801280
VisibleColumns.AddRange(cols);
1281+
VisibleColumnNames = VisibleColumns.Where(i => i.Visible).Select(a => a.Name).ToHashSet();
1282+
12811283
}
12821284

12831285
/// <summary>

0 commit comments

Comments
 (0)