【发布时间】:2011-04-26 13:38:20
【问题描述】:
我有一些方法可以返回一个 T 列表,比如 GetAllEvents。在某些情况下,我需要按日期或项目上的某些其他属性过滤该事件列表(或我的列表是什么)。
我知道 LINQ 查询可以“链接”或有 x 行进一步细化它们,并且查询将不会执行,直到您需要在非 linq 语句中实际使用它们时(请纠正我,如果我对这个信念是错误的。)
我的问题是,如果我的 GetAllXXX 方法返回我得到的任何内容的列表,我在执行 LINQ 的 GetAllXXX 代码末尾使用的 .ToList() 方法是什么?我应该返回 IEnumerable 吗?如果仅适用于在实际运行查询之前我需要对“结果”做进一步处理的情况。
这是我担心的一个例子:我说有 1000 个事件。 GetAllEvents 将检索所有 1000 个并给我一个列表。然后,根据用户所在的页面,可能只显示今天、本周或某个类别的事件。理想情况下,当我向用户展示今天发生的 5 个事件时,我真的不想通过网络传递所有 1000 个事件,然后将其截断为他们真正想要的 5 个事件。是的,我知道此时它都是服务器端的,但如果它仍在为 1000 分配内存,我会尽量避免这种情况。
有什么指点或建议吗?
【问题讨论】:
-
不要返回
List<T>。但是你可以考虑返回IList<T>。
标签: c# linq memory-management