LINQ比较字符串和数据库列类型'文本'

Mic*_*Mao 1 c# linq asp.net entity-framework

这是我的错误消息The data types text and varchar are incompatible in the equal to operator.我的代码是这样的

var result = db.Table.Where(x => x.columnA == "A").ToList();
Run Code Online (Sandbox Code Playgroud)

我知道原因是columnA数据库中的类型是文本,所以它们无法匹配,我无法更新数据库方案.

我可以使用LINQ to SQL来做到这一点吗?

更新

这是我的DAO

[Required]
[StringLength(10)]
public string MessageName { get; set; }
Run Code Online (Sandbox Code Playgroud)

mad*_*dd0 6

TEXT 列不支持等于运算符,即使在SQL中也是如此.

您必须创建它,以便将查询转换为LIKE运算符,可以使用Contains(LIKE '%str%'),StartsWith(LIKE '%str')或EndsWith(LIKE '%str')来实现.

如果你需要严格的平等,这样的事情应该有效:

var result = db.Table.Where(x => x.columnA.StartsWith("A") &&
                                 x.columnA.EndsWith("A")).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 虽然你是正确的,但是这个样本并没有提供严格的平等.例如,包含"A blah blah A"的字段将匹配.您可以使用ToString()为Linq To SQL提供==.但是,在Text字段上执行==是无稽之谈. (3认同)