我对下面列表中的内容有点困惑,在linq中返回select中使用的内容。
1.IEnumerable 2.List 3.ObjectQuery 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;
}
我将使用您的建议,以便我们将代码标准化。 请根据我的上述代码参考您的答案。
表示感谢
答案 0 :(得分:4)
您应该返回IQueryable<T>
这允许消费者在不将您的接口耦合到EF的情况下向SQL查询添加投影。
答案 1 :(得分:0)
您应该始终返回限制最少的数据类型。它允许将来最大的灵活性并减少耦合。
根据您所拥有的体系结构,如果您可能想要进行LINQ链接,则可能是IQueryable<T>
。或者您可以将强类型对象(如DTO)的集合作为IEnumerable<T>
返回。
IEnumerable非常适合处理内存中迭代的序列,但IQueryable允许内存不足的内容,例如数据库或Web服务。
答案 2 :(得分:0)
这取决于相关数据的大小以及您将使用它做什么。 IQueryable允许稍后修改查询,但对于具有复杂查询的大型数据集,它可能导致性能大幅下降。在这样的情况下,我更喜欢返回列表并避免进一步的麻烦,但如果你选择坚持使用IQueryable,你必须确保在没有巨大性能命中的情况下进行评估。