这是我的错误消息The data types text and varchar are incompatible in the equal to operator.
我的代码类似于
var result = db.Table.Where(x => x.columnA == "A").ToList();
我知道原因是DB中的columnA
类型是文本,因此无法匹配
我无法更新数据库方案。
我可以使用LINQ to SQL吗?
更新
这是我的DAO
[Required]
[StringLength(10)]
public string MessageName { get; set; }
答案 0 :(得分:5)
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();
答案 1 :(得分:1)
你可以使用它(我没有测试过代码)
var result = db.Table.Where(x => x.columnA.Contains("A").ToList();
答案 2 :(得分:1)
你可以将有问题的列转换为字符串吗?我没有办法测试这个,因为我没有Text
类型的数据库。
var result = db.Table.Where(x => x.columnA.ToString() == "A").ToList();
答案 3 :(得分:1)
我尝试了上述所有解决方案,但没有一个修复对我有用,所以在这里我发布了对我有用的修复
var result = db.Table.Where(x => Convert.ToString(x.columnA) == "A").ToList();