【发布时间】:2008-11-07 06:33:02
【问题描述】:
- LINQ(语言集成查询)的优缺点是什么?
- 使用 LINQ 的最佳和最差情况是什么?
- 您从使用 LINQ 中受益或没有受益?
- 哪些数据源从 LINQ 中受益最少和最多?
【问题讨论】:
-
似乎是社区 Wiki 问题的好候选人
【问题讨论】:
我是 LINQ 的忠实拥护者——尽管它需要被正确看待,而不是被视为灵丹妙药。
优点:
缺点:
OrderBy 的等价物 - 例如。找到具有最大值的项目我发现在处理进程内查询时最好。它们很容易预测、理解和扩展。 LINQ to XML 和 Parallel LINQ 等互补技术非常棒。 LINQ to Objects 几乎可以在任何地方使用。
LINQ to SQL 等在适当的地方非常好,但它们更难理解并且需要更多的专业知识。它们也仅适用于代码的某些区域。
【讨论】:
我最喜欢的部分:使用它们来简化编写单元测试。 IEnumerable 链也敦促我在我的代码中编写更流畅的接口。
缺点:Lambda 和扩展方法是我的锤子,所有问题都是钉子。
总体而言:为我的 C# 编程注入了新的活力。
【讨论】:
它们存在一个问题,即通过延迟执行将异常从 try catch 块中偷偷溜出。
例如:
var l = new List<int>() {1, 2, 3};
try
{
l.Select(x => x / 0);
}
catch
{
// error
}
l.elementAt(0); // exception occurs here outside of the try catch
当您第一次遇到它时可能会很棘手,尤其是当调试器会将您指向 try-catch 中的代码时。
否则我发现它们非常有用并且非常节省时间。
【讨论】:
专业版:
缺点:
@Jon Skeet - 另一个很好的回应,你抢了所有人的风头:P。我完全同意编写提供程序的难度,我目前正在编写中!你熟悉 Bart De Smet 吗?他有很多这样做的好例子。
【讨论】:
我主要使用 LINQ 来处理对象的集合。 LINQ 与对象集合完美配合,在大多数情况下无需谓词函数。
我不久前尝试使用 LINQ to SQL,但发现它功能不足且笨拙。特别是我无法让自己使用 SQL 数据库类设计器。也许它确实在数据库上提供了智能感知,但是当你有 SQL 时谁需要它?
不过,让我告诉你,了解更多关于 LINQ 的信息当然是个好主意,因为未来的应用程序只会越来越多。
【讨论】: