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();
}
哪种方法是标准代码?(但我的第一种方法抛出了一个对话错误:)
有什么区别?
在第一个示例中,您将从数据库中获取所有CollegeAddresses,然后进行筛选。
第二个示例向查询中添加了一个where
子句,因此在它到达方法之前对其进行过滤。
编辑:至于第一种方法中的错误,是因为Where
返回的是IQueryable
而不是List
。因此,您必须添加ToList();
。不过,您仍然应该使用第二种方法。
不同之处在于,第一个示例将返回一个IQueryable,该IQueryaable将在查询时进行评估,而第二个示例则返回一个评估的List
我还可以建议更改方法签名:吗
public List<CollegeAddress> GetAddressesByState(int stateId)
{
return collegeAppContext.CollegeAddresses.Where(x => x.StateId == stateId).ToList();
}