使用LINQ在二进制字段上搜索

时间:2012-10-03 17:03:03

标签: c# linq

我有一个包含二进制字段(表示为“bin”)的表,其中包含14个字节的数据。我想在这个字段上搜索如下:

from row in db.users where row.bin.SequenceEqual(data) select row

“data”变量的类型是byte []。 但是当我运行“q.Count()”时,我遇到以下错误:

LINQ to Entities does not recognize the method 'Boolean SequenceEqual[Byte]
(System.Collections.Generic.IEnumerable`1[System.Byte], 
System.Collections.Generic.IEnumerable`1[System.Byte])' method, 
and this method cannot be translated into a store expression.

如何检索匹配二进制数据的数量?

由于

2 个答案:

答案 0 :(得分:1)

如果您拥有数据模型,并且二进制数据是固定大小的字节数组,则可以将SQL数据类型从binary(14)更改为char(21),使用Convert.ToBase64String进入数据库的方式,以及Convert.FromBase64String的出路。

切换到字符串会使您的数据可搜索:只需将搜索data编码为base64字符串,并在搜索条件中使用==运算符。

答案 1 :(得分:0)

你做不到。实体框架不支持使用二进制字段进行操作。