【问题标题】:Is there a way to use LINQ query syntax with .NET 3.0 projects?有没有办法在 .NET 3.0 项目中使用 LINQ 查询语法?
【发布时间】:2010-07-27 21:53:04
【问题描述】:

我有一个只能部署在运行 .NET 3.0 的服务器上的项目。 我非常想使用 LINQ 来简化一些极其繁琐的逻辑。 有没有一种简单的方法可以做到这一点?我会满足于任何语法。

非常感谢

【问题讨论】:

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


    【解决方案1】:

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

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

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

    正如 Marc 所引用的,LINQBridge 通过重新实现功能来工作,但我相信它仅适用于 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 的合法性问题。

    【讨论】:

    • 当我说 Mono 实现了所有的 LINQ 时,我的意思是它支持 Linq-to-Objects、Linq-to-XML 和 Linq-to-Sql(通过 DBLinq 项目)。 Mono 的最新版本(截至 2010 年 7 月)是 2.6.7,我可以从那里获得程序集。
    • 这是迄今为止问题中最好的答案!
    • 哦,我应该补充一点,如果你想做 Linq-to-XML,你还需要 System.Xml.Linq.dll。帕特里克用他的绝地力量欺骗了我。
    【解决方案2】:

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

    【讨论】:

    • 哇不错的工具,会检查一下
    • 我认为@Justin 的回答更好(参考 Mono 库)——如果是我,我真的很想拥有 LINQ to XML。此外,Mono 社区很大而且很活跃,而这只是由一个人实现的,我什至不知道它是否得到维护。库上的 MIT 许可证也使其适用于大多数企业场景。
    • 那么为什么我得到了-1?因为你更喜欢另一个答案?
    • 我想它不值得一票否决。如果你愿意,如果你对帖子进行编辑,我会撤消它。
    • @Mike,如果您认为它不能回答问题,请留下反对票;我不在乎正在进行的代表 MMORPG。但我的观点是它很好地解决了问题。但至少,请留下评论,说明为什么您认为它不能解决上述问题。关于它是 LINQ to Objects 的警告在引用的页面以及您的原始评论中都有说明。
    【解决方案3】:

    取自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。这将防止编译错误。

    我试过了,它奏效了,但请注意 Mike Atlas 对部署这 2 个文件的法律后果的警告。

    【讨论】:

    • 这实际上引发了重新分发 Microsoft 库的法律问题。这样做要小心。
    • 这个实际上对我不起作用。在我将目标框架从 3.5 更改为 3.0 后,Visual Studio 删除了 System.Core 和 System.Data.Linq dll
    • @Silver Gun,您是否尝试在更改为 3.0 后重新添加引用?
    • @Patrick McDonald - 是的,但 Visual Studio 将来自不兼容或更新版本框架的 DLL 灰显。
    • 既然你已经接受了另一个答案,我不知道你为什么还在看这个。但是,您似乎省略了上面的第 2 步,您需要将 2 个 dll 复制到您的项目/解决方案文件夹中,并从“添加引用”对话框的“浏览”选项卡中将它们添加为引用,您无法从 .NET 选项卡中添加它们.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 2011-05-05
    相关资源
    最近更新 更多