繁体   English   中英

如何计算var中的记录数

[英]How to count number of records in a var

我有以下代码,它从数据库返回 model。 我想知道写了多少条记录。 我正在尝试使用model.countmodel.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM