如何使用LINQ to Entities获取字节数组长度?

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

我尝试过以下方法:

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

问题是我得到以下exception:

LINQ to Entities中不支持LINQ表达式节点类型’ArrayLength’。“

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

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

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

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

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

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