代码之家  ›  专栏  ›  技术社区  ›  Neil Barnwell

之间的差异系统动态以及系统。林克?

  •  2
  • Neil Barnwell  · 技术社区  · 14 年前

    使用ReSharper,我偶尔会得到为LINQ操作导入命名空间的快速修复建议。在一个全新的类中给出以下代码:

    linqToSqlDataContext.Customers.Count();
    

    我得到一个快速修复下拉列表,如下所示:

    alt text

    我应该选择哪一种,它们之间有什么区别?

    5 回复  |  直到 14 年前
        1
  •  5
  •   Jon Skeet    14 年前

    系统动态的命名空间 Dynamic LINQ 希望

    动态LINQ允许您将查询表示为文本—有点像 DataTable.Select . 我个人还没找到它的用处,但你 我想要它。不过,这应该是一个深思熟虑的选择。大多数情况下,您可以使用静态类型的linqto对象。

    编辑:根据OP的评论,动态LINQ的代码可以直接添加到项目中,而不是作为单独的程序集引用。即使你 实际上,如果您想使用动态LINQ,我强烈建议将其保存在单独的程序集中,而不是将其与您自己的代码混合在一起。

        2
  •  1
  •   Martin Harris    14 年前

    动态LINQ是一种 non-typesafe version of LINQ. 它使用字符串而不是lambda来生成查询。

        3
  •  1
  •   Mike Killey    14 年前

    斯科特·汉斯曼做了一个 good explanation 动态查询。基本上,它允许您在运行时参数可能发生变化的地方有更多的动态性。

        4
  •  0
  •   Neil Barnwell    14 年前

    啊!最后的答案是,我的一位同事补充了 DynamicQueryable 我们项目的扩展类(从 http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx ),而雷斯哈珀正在收集。

        5
  •  0
  •   Никола Караклић    6 年前

    因为我在这里没有看到任何使用动态LINQ的例子,所以这里是这样的:

    在我的存储库中,我会有这样一个方法:

    public IEnumerable<T> Find(Expression<Func<T, bool>> predicate);

    如您所见,表达式用作谓词。

    此外,我还通过WCF进行了客户机-服务器通信。因为表达式是不可序列化的,所以我不得不使用动态LINQ,在这里我只发送谓词的字符串表示,并将它们与我的存储库一起使用。