【问题标题】:Does Linq have "Difference"?Linq有“差异”吗?
【发布时间】:2011-09-06 12:46:21
【问题描述】:

我有一个使用差异的 sql 语句 => http://msdn.microsoft.com/en-us/library/ms188753.aspx

我在存储过程中执行此操作,但我想更改为 LINQ。 LINQ中是否存在等于差异?

例如: WHERE (DIFFERENCE(C.LastName, ''' + @name + ''') >= 4

谢谢

【问题讨论】:

    标签: linq


    【解决方案1】:

    System.Data.Objects.SqlFunctions 具有 (AFAIK) 所有有用的 T-SQL 函数,例如 Difference、Soundex、Like 等。 这些函数由 Linq2Sql 在 where 子句中翻译成它们的 T-SQL 等价物。

    编辑:糟糕,这是 4.0。对于那个很抱歉。也就是说,要这样做,您可以在数据库中创建一个用户定义的函数,并将该函数添加到您的 DBML 文件中并像调用 SqlMethods.Like 一样调用它(这是我正在考虑的那个)。 Here's the MSDN docs on it.

    基本上,您只需创建一个 UDF,它采用与 DIFFERENCE 相同的输入并返回相同的结果。该函数除了调用 DIFFERENCE 方法之外什么也不做。然后你在你的 DBML 中公开它,并在你的查询中使用你的函数。

    【讨论】:

      【解决方案2】:

      不,没有 .NET 方法可以转换为。

      【讨论】:

      • 从 .NET 3.5 开始,没有适用于 LINQ to SQL 的版本。您提到的那个明确指定了两件事:1. LINQ to Entities。 2. 4.中支持。
      • 确实如此。正在考虑没有差异的 SqlMethods.[XXX]。幸运的是,有一种简单的方法可以暴露他的需求。
      【解决方案3】:

      .NET 没有内置 Soundex 功能。请参阅this article,了解如何在 C# 中实现 Soundex,包括 T-SQL 的 DIFFERENCE() 函数使用的算法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-15
        • 1970-01-01
        • 2016-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        相关资源
        最近更新 更多