我有一个Document类,它将该文档的数据存储为字节数组。 我需要使用LINQ to Entities来检查数组的大小。
我尝试了以下内容:
[long Linq query here...] o.Data.Length < 800000)
问题是我得到以下异常:
LINQ to Entities不支持LINQ表达式节点类型'ArrayLength'。“
还有其他方法可以检查字节数组的大小吗?
答案 0 :(得分:26)
使用SqlFunctions.DataLength Method (Byte[])
比较长度。
yourquery..... SqlFunctions.DataLength(o.Data) < 800000)
请参阅:Linq2EF pitfall: Using Length property causes System.NotSupportedException
答案 1 :(得分:3)
如果可能,您的LINQ to Entities查询将转换为SQL。由于转换器不将Array.Length映射到任何SQL方法,因此不能在LINQ to Entities查询中使用它。
您可以做的是在表中添加一列或创建一个VIEW
来计算长度并将其作为列公开。然后,您可以查询该字段,它将起作用。