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

时间:2013-10-21 13:45:48

标签: c# arrays linq linq-to-entities

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

我尝试了以下内容:

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

问题是我得到以下异常:

  

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

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

2 个答案:

答案 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来计算长度并将其作为列公开。然后,您可以查询该字段,它将起作用。