表格
Work
具有三列:ID
、Region
和 Worker
。
并且有两个下拉列表。
DropDown A:选择并过滤
Region
,与数据region
绑定到
regions
DropDown B:选择并过滤
Worker
,与数据worker
绑定到
workers
流程:用户选择region,然后选择该region的worker
初始化:
List<Work> works = new();
works = GetWorks(); //get all the records from the table
List<string> regions = new();
List<string> workers = new();
regions = works.Select(w=>w.region).Distinct().ToList();
当用户选择区域时
workers = works.Where(w=>w.Region == region).Select(w=>w.worker).Distinct().ToList();
但是,当有数千条记录时,速度会非常慢。
如何更有效地实现这一目标?谢谢!
看起来
GetWorks
可能会返回 List
或 IEnumerable
。这里的问题是将所有这些数据加载到内存中可能会出现问题。本质上,该解决方案涉及将工作委托给数据库:使 GetWorks
返回 IQueryable
。这样,当您执行works.select(w => w.region).Distinct()
时,该操作将在数据库中执行。 works.select(w => w.region).Distinct()
也是如此。只有在 BlazorServer
工作才能实现这一目标。
如果您使用 Blazor-WASM,则需要公开服务
GetRegions
和 GetWorkers
。
奖励轨道:标准化数据库并创建
Region
模型。