有没有办法在.NET 3.0项目中使用LINQ查询语法?

时间:2010-07-27 21:53:05

标签: c# .net-3.5 .net-3.0

我有一个只能部署在运行.NET 3.0的服务器上的项目。 我迫切希望使用LINQ来简化一些极其乏味的逻辑。 有没有一种简单的方法来实现这一目标?我会满足于任何语法。

非常感谢

3 个答案:

答案 0 :(得分:2)

同事使用LINQBridge并取得了成功。

答案 1 :(得分:2)

取自http://codebeat.wordpress.com/2008/06/23/using-linq-in-net-30/

  1. 首先,使用Linq to .NET 3.0配置项目的目标框架。 .NET 3.5引用将被删除。
  2. 然后,在解决方案中复制System.Data.Linq.dll和System.Core.dll,无论您喜欢哪个地方(在我的情况下,根文件夹)。
  3. 在所有相应的项目中添加它们作为参考。 Visual Studio将警告程序集需要更高版本的框架。按是。
  4. 将引用的SpecificVersion属性设置为true。这样可以防止编译错误。
  5. 我尝试了这个,但它有效,但要注意Mike Atlas对部署这两个文件的法律后果的谨慎。

答案 2 :(得分:2)

由于.NET 2.0到3.5都在CLR 2.0上运行,因此所有LINQ内容都只是一堆库。如果您包含您的框架版本中缺少的DLL,它将正常工作。

正如帕特里克所说,关键的3.5 DLL是System.Core.dll(提供System.Linq)和System.Data.Linq.dll(用于Linq-to-SQL)。

如果你这样做,我认为你至少需要.NET 2.0SP1的System.dll。

LINcBridge,正如Marc所引用的那样,通过重新实现功能来工作,但仅限于Linq-to-Objects我相信。

另一种选择是从Mono项目中使用这些相同的DLL(System.Core.dll和System.Data.Linq.dll)。他们重新实现了所有LINQ。 Linq-to-Sql的东西可能有点不成熟,但它确实具有与MSSQL不同的其他数据库的优点。

http://mono-project.com/Main_Page

这消除了使用您的应用程序分发Microsoft DLL的合法性的任何问题。