11

我有一个 Document 类,将该文档的数据存储为字节数组。我需要使用 LINQ to Entities 检查数组的大小。

我尝试了以下方法:

[long Linq query here...] o.Data.Length < 800000)

问题是我得到以下异常:

LINQ to Entities 不支持 LINQ 表达式节点类型 'ArrayLength'。”

有没有其他方法可以检查字节数组的大小?

4

2 回答 2

33

用于SqlFunctions.DataLength Method (Byte[]) 比较长度。

yourquery..... SqlFunctions.DataLength(o.Data) < 800000)

请参阅:Linq2EF 陷阱:使用 Length 属性会导致 System.NotSupportedException

于 2013-10-21T13:51:01.257 回答
3

如果可能,您的 LINQ to Entities 查询将被转换为 SQL。由于转换器不会将 Array.Length 映射到任何 SQL 方法,因此您不能在 LINQ to Entities 查询中使用它。

您可以做的是在表中添加一列,或者创建一个VIEW计算长度并将其公开为列的列。然后您可以查询该字段,它将起作用。

于 2013-10-21T13:51:48.833 回答