在linq中返回select查询的最佳实践
本文关键字:最佳 查询 select linq 返回 | 更新日期: 2023-09-27 18:27:46
我有点困惑,在下面的列表中,在linq中返回select时应该使用什么。
1.I数字2.列表3.对象查询4.ConvertLinqtoDataTable
你更喜欢哪一个?
目前,我们在返回记录时使用了objectquery。
public ObjectQuery StationSelectByStationId(int stationid)
{
var query = from station in _iiqrEntities.Station
where station.StationId == stationid
select station;
return query as ObjectQuery;
}
我将使用您的建议,以便我们将代码标准化。请根据我上面的代码参考你的答案。
感谢
您应该返回一个IQueryable<T>
这允许消费者在不将接口耦合到EF的情况下向SQL查询添加投影。
您应该始终返回限制最少的数据类型。它允许在未来实现最大的灵活性,并减少耦合。
根据您的体系结构,如果您可能想要进行LINQ链接,这可能是一个IQueryable<T>
。或者,您可以将强类型对象(如DTO)的集合作为IEnumerable<T>
返回。
IEnumerable非常适合处理在内存中迭代的序列,但IQueryable允许使用内存不足的东西,如数据库或web服务。
这取决于有问题的数据的大小以及您将如何处理它。IQueryable确实允许稍后修改查询,但对于具有复杂查询的大型数据集,它可能会导致性能大幅下降。在这种情况下,我更喜欢返回一个列表,以避免进一步的头痛,但如果你选择坚持使用IQueryable,你必须确保它的评估没有巨大的性能打击。