3

使用诸如ToList,ToLookUp,Distinctetc 之类的贪婪 LINQ 运算符是否明智?

LINQ 查询执行的最佳实践是什么?您经常使用您的对象List<>或将您的所有对象列表到IEnumerable<>. 我知道最新的提供了更多的灵活性。

使用内存(LINQ to Objects)时,可以始终使用延迟加载,因为您可以在需要时访问它,而不必担心数据更改、添加或插入,因为引用将在您需要访问时立即执行查询。但这会随着数据库 LINQ 查询(例如 LINQ to EF)而改变。

想要 StackOverflow 用户的意见。

谢谢!

4

1 回答 1

1

LINQ 查询执行的最佳实践是什么?

List 可以通过 index 访问,Lookup 可以通过 Key 访问。这些类型显然可以跨 WCF 边界序列化。延迟的 IEnumerable 不能很好地完成这些事情。

对于 EF 或 LinqToSql,必须在 DataContext 或任何持有 SqlConnection 的东西被释放之前运行它们的查询。


在我的代码中,我只在方便时将延迟的 IEnumerables 用于方法范围的变量。我将 List 用于属性(有时属性构造 List,但通常它只是由实例支持)和方法返回类型。因为我在做相对昂贵的事情(比如访问数据库或使用 WCF),所以急切地执行内存中的 Linq 查询的性能从来都不是问题。

任何性能问题的最终权威是:how does it measure?

于 2012-04-06T15:49:52.750 回答