【问题标题】:compare ntext by string in sql server 2005 by linq通过 linq 在 sql server 2005 中按字符串比较 ntext
【发布时间】:2011-03-11 12:19:55
【问题描述】:

如何将 sql server 2005 中的 ntext 类型与带有 linq 的字符串进行比较?

在 sql server 2005 中;

@a as ntext

c#中的linq;

string b;

var k=from p in DataContext.TableName 

where p.a.toString()==b)

select p;

//return k=null

【问题讨论】:

  • NTEXT 已弃用,不应再使用 - 请改用 NVARCHAR(MAX)。这种类型也更容易处理!
  • 我没有为这个变量定义最大值
  • 你是不是忘记了DataContext这个词后面的表/实体名?

标签: c# sql linq sql-server-2005


【解决方案1】:

无法比较 NTEXT 列。见MSDNMSDN Forum

如果您使用 2005 或更高版本,请按照其他人的建议将 NTEXT 转换为 NVARCHAR(MAX)。

【讨论】:

  • 这并不完全正确。正如它甚至提到的(至少在 MSDN 论坛的链接中),它们在使用 LIKE 子句时是可比较的。这也在这里讨论:stackoverflow.com/questions/6002514/… 但是,我不确定这是否对 LINQ 查询有帮助。
【解决方案2】:

您可以使用 System.Data.Linq.SqlClient.SqlMethods 类的静态“Like”方法在 linq2sql 中执行此操作。

string b;

var k=from p in DataContext.TableName 

where System.Data.Linq.SqlClient.SqlMethods.Like(p.a, b)

select p;

【讨论】:

    【解决方案3】:

    如果使用 linq2sql,那么您的伪代码是正确的 - 尽管您不需要使用 .ToString() 并且显然您需要匹配括号。

    此外,正如 cmets 中已经指出的,NVARCHAR(MAX) 现在是首选数据类型,而不是 NTEXT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      相关资源
      最近更新 更多