ToList()查询前的代码差异

本文关键字:代码 查询 ToList | 更新日期: 2023-09-27 17:58:47

这种方法之间有什么区别

public List<CollegeAddress> GetAllAddress()
{
    return collegeAppContext.CollegeAddresses.ToList().Where(x => x.StateId == 4);
}

public List<CollegeAddress> GetAllAddress()
{
    return collegeAppContext.CollegeAddresses.Where(x => x.StateId == 4).ToList();
}  

哪种方法是标准代码?(但我的第一种方法抛出了一个对话错误:)

有什么区别?

ToList()查询前的代码差异

在第一个示例中,您将从数据库中获取所有CollegeAddresses,然后进行筛选。

第二个示例向查询中添加了一个where子句,因此在它到达方法之前对其进行过滤。

编辑:至于第一种方法中的错误,是因为Where返回的是IQueryable而不是List。因此,您必须添加ToList();。不过,您仍然应该使用第二种方法。

不同之处在于,第一个示例将返回一个IQueryable,该IQueryaable将在查询时进行评估,而第二个示例则返回一个评估的List

我还可以建议更改方法签名:吗

public List<CollegeAddress> GetAddressesByState(int stateId)
{
    return collegeAppContext.CollegeAddresses.Where(x => x.StateId == stateId).ToList();
}