c# - LINQ 比较字符串和数据库列类型 'text'

标签 c# asp.net entity-framework linq

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

var result = db.Table.Where(x => x.columnA == "A").ToList();

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

我可以使用 LINQ to SQL 来实现吗?

更新

这是我的 DAO

[Required]
[StringLength(10)]
public string MessageName { get; set; }

最佳答案

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();

关于c# - LINQ 比较字符串和数据库列类型 'text',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37785566/

相关文章:

c# - 正则表达式解析两个标记之间的字符串,没有捕获组并排除标记

c# - SoudPlayer一次又一次播放同一文件

c# - 如何声明和使用来自 json 对象的函数名?

c# - ASP.NET:你最常用的 httpmodules

c# - 使用附加子句更新实体

如果任何任务在一段时间内没有完成,c#线程会通知用户

c# - 母版页忽略了我已删除 CSS 文件的事实

asp.net - 如何将 JSON 注入(inject)我的 .aspx 文件?

entity-framework - EF4 Context.ApplyCurrentValues 不更新当前值

entity-framework - 如何更新 EF 中的导航属性/相关表?