在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;
    }

我将使用您的建议,以便我们将代码标准化。请根据我上面的代码参考你的答案。

感谢

在linq中返回select查询的最佳实践

您应该返回一个IQueryable<T>
这允许消费者在不将接口耦合到EF的情况下向SQL查询添加投影。

您应该始终返回限制最少的数据类型。它允许在未来实现最大的灵活性,并减少耦合。

根据您的体系结构,如果您可能想要进行LINQ链接,这可能是一个IQueryable<T>。或者,您可以将强类型对象(如DTO)的集合作为IEnumerable<T>返回。

IEnumerable非常适合处理在内存中迭代的序列,但IQueryable允许使用内存不足的东西,如数据库或web服务。

这取决于有问题的数据的大小以及您将如何处理它。IQueryable确实允许稍后修改查询,但对于具有复杂查询的大型数据集,它可能会导致性能大幅下降。在这种情况下,我更喜欢返回一个列表,以避免进一步的头痛,但如果你选择坚持使用IQueryable,你必须确保它的评估没有巨大的性能打击。