这些方法有什么区别
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();
}
哪一种方法是标准代码? (但我的第一种方法引发了对话错误:)
有什么区别?
答案 0 :(得分:5)
在您的第一个示例中,您将从数据库中带来所有CollegeAddresses,然后进行过滤。
您的第二个示例在您的查询中添加了where
子句,因此在它涉及您的方法之前已经过滤了。
编辑:
至于第一种方法中的错误,因为Where
返回IQueryable
而不是List
。所以,你必须添加ToList();
但是你应该仍然使用第二种方法。
答案 1 :(得分:0)
不同之处在于第一个示例将返回一个IQueryable,它将在查询时进行评估,第二个示例将返回一个已评估的List
我可以建议改变方法签名:
public List<CollegeAddress> GetAddressesByState(int stateId)
{
return collegeAppContext.CollegeAddresses.Where(x => x.StateId == stateId).ToList();
}