[英]How to count number of records in a var
我有以下代码,它从数据库返回 model。 我想知道写了多少条记录。 我正在尝试使用model.count
或model.lenght
但它不起作用。
var model = await _repository.GetEmployees(name);
GetEmployees 方法定义如下:
public async Task<IEnumerable<Employee>> GetEmployees(string name)
{
return await _dbContext.Employee
.Where(c => c.EmpName == name).ToListAsync();
}
我需要知道记录的数量。
将 System.Linq 添加到您的使用中。 它将为所有 IEnumerables 提供一个扩展方法,称为 Count()
public async Task<IEnumerable<Employee>> GetEmployees(string name)
{
return await _dbContext.Employee
.Where(c => c.EmpName == name).ToListAsync();
}
既然您知道它是List<>
您的方法应该返回该类型。 否则,您只是在自欺欺人,其直接后果是,您的程序将充斥着效率低下的 Linq、查询已经存在的数据,或者对已经实现的事物进行大量ToList
调用。
因此,要么将其设为列表,然后使用Count
属性。
public async Task<List<Employee>> GetEmployees(string name)
{
return await _dbContext.Employee
.Where(c => c.EmpName == name).ToListAsync();
}
或者将其保留为IEnumerable
,因为您不想为调用者实现它(也许有充分的理由):
public async IEnumerable<Employee> GetEmployees(string name)
{
return await _dbContext.Employee.Where(c => c.EmpName == name);
}
但是,由于许多原因,这很棘手。 例如,只有在调用者实际尝试枚举它并且谁知道_context
是否仍然存在时,才会进行数据库调用。
如果你真的只需要计数,你应该从数据库中查询,而不是向你的应用程序发送数百名员工,当一个简单的“359”或类似的 integer 就足够了:
public async Task<int> GetNumberOfEmployees(string name)
{
return await _dbContext.Employee
.CountAsync(c => c.EmpName == name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.