我有两个查询,两个查询都产生相同的结果,但我想知道哪一个更有效。下面是查询,我只写了查询子句。两个查询的内部条件相同。
最后,我尝试了下面的代码,它显示“IQueryable().ToList().Where();” 更好。有几个问题我不明白: 1. 没有看到我下面的临时代码,哪个查询更有效?2.据我所知,IQueryable非常适合查询远程数据。那么,是否应该先过滤掉项目,然后使用 ToList,这样我们就不需要对不相关的项目执行 ToList 函数?(如果是这种情况,那么为什么下面的代码说查询 2 更有效?)
Stopwatch st1 = new Stopwatch();
Stopwatch st2 = new Stopwatch();
int counter = 10000;
IEnumerable<Employee> iEmp = null;
IQueryable<Employee> qEmp = null;
BindingList<Employee> bList = new BindingList<Employee>();
for (int i = 1; i <= counter; ++i)
{
bList.Add(new Employee
{
Department = $"Dept - {i}",
EmployeeID = i,
EmployeeName = $"Employee - {i}",
Salary = i + 10000
});
}
iEmp = bList.AsEnumerable<Employee>();
qEmp = bList.AsQueryable<Employee>();
st1.Start();
var …Run Code Online (Sandbox Code Playgroud)