我和一位同事就在我们的C#代码中使用LINQ to对象(IEnumerable,而不是IQueryable)的问题发生了争论。我使用的是LINQ,他说我们不应该在代码中使用外部供应商(Microsoft)的代码,而应该自己将其包装在自己的抽象层中。
现在我理解了这种方法,当你有一个没有名字的第三方dll可能会在下周停业,或者当你处理数据库调用(即.返回一个通用的数据提供程序,而不是SQL或Oracle特定的提供程序),但在我看来,LINQ语法太漂亮/优雅/可读,微软在未来10年内不会放弃。它与ToString("Hello {0}",firstName);功能一样有可能被删除。
我可以放弃争论,实现我们自己的LINQ库,在幕后调用标准的LINQ方法,但这不是已经做完了吗?另外,我只能使用扩展方法,我不知道如何包装它:
from e in employees
select new { e.Name, e.Id };你的论点是什么,支持还是反对使用LINQ to objects ( IEnumerable扩展方法)?
发布于 2011-07-12 04:29:50
你的朋友错了。LINQ是C# 3.0的旗舰特性,并且不会离开该语言。微软总有可能停止支持C# (尽管我对此深表怀疑),但只要有C#,就会有LINQ。
另外,还要考虑LINQ-to-objects扩展方法驻留在哪个程序集中:System.Core。
发布于 2011-07-12 04:29:23
他完全错了。
该论点仅在处理可替换组件时适用,例如数据库平台。
微软非常小心地避免在.Net中做出破坏性的更改;他们绝不会放弃LINQ。
为了回答您的其他问题,查询理解语法(from x in y)是一种被转换为方法调用的编译器特性。
如果您编写自己的方法,编译器将很乐意使用它们。
已经有LINQ方法的第三方实现,例如LINQBridge (用于.Net 2.0,它早于LINQ2.0)或EduLINQ (出于教育目的编写)
发布于 2011-07-12 04:30:25
我使用的是LINQ,他说我们不应该在我们的代码中使用外部供应商的代码,但我们应该自己把它包装在我们自己的抽象层中。
它是该语言的核心部分(即,C#语言规范的一部分)。只要C#还存在,它就会一直存在。它的改变将破坏改变,并将是微软的客户的巨大成本。他们不会这么做的。
https://stackoverflow.com/questions/6656121
复制相似问题