Skip to content

Commit 2f268c1

Browse files
feat(Table): improve performance for GetVisibleColumns function (#6886)
* feat(table): 减少linq迭代器对象的创建,避免Enumerable.Any处于嵌套循环中 * refactor: 重构代码 * refactor: 重构代码 * refactor: 移除变量 --------- Co-authored-by: Argo Zhang <[email protected]>
1 parent 21238ea commit 2f268c1

File tree

3 files changed

+7
-7
lines changed

3 files changed

+7
-7
lines changed

src/BootstrapBlazor/Components/Table/Table.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@
107107
<span class="caret"></span>
108108
</button>
109109
<div class="dropdown-menu dropdown-menu-end shadow">
110-
@foreach (var item in VisibleColumns)
110+
@foreach (var item in _visibleColumns)
111111
{
112112
<div class="dropdown-item">
113113
<Checkbox ShowAfterLabel="true" DisplayText="@item.DisplayName" IsDisabled="@GetColumnsListState(item)"

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,7 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
466466
/// <summary>
467467
/// 获得/设置 各列是否显示状态集合
468468
/// </summary>
469-
private List<ColumnVisibleItem> VisibleColumns { get; } = [];
469+
private readonly List<ColumnVisibleItem> _visibleColumns = [];
470470

471471
/// <summary>
472472
/// 获得当前可见列集合
@@ -475,11 +475,11 @@ public Func<TItem, bool>? ShowDeleteButtonCallback
475475
public IEnumerable<ITableColumn> GetVisibleColumns()
476476
{
477477
// 不可见列
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);
478+
var items = _visibleColumns.Where(i => i.Visible).ToList();
479+
return Columns.Where(i => !i.GetIgnore() && items.Find(v => v.Name == i.GetFieldName()) != null && ScreenSize >= i.ShownWithBreakPoint);
480480
}
481481

482-
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;
482+
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;
483483

484484
private bool ShowAddForm { get; set; }
485485

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1276,8 +1276,8 @@ private void InternalResetVisibleColumns(List<ITableColumn> columns, IEnumerable
12761276
}
12771277
}
12781278
}
1279-
VisibleColumns.Clear();
1280-
VisibleColumns.AddRange(cols);
1279+
_visibleColumns.Clear();
1280+
_visibleColumns.AddRange(cols);
12811281
}
12821282

12831283
/// <summary>

0 commit comments

Comments
 (0)