【发布时间】:2013-04-26 15:53:53
【问题描述】:
我最近发现我无法从 linq 查询中调用任何方法。我正在尝试编写一个查询,在 where 子句上比较两个字节数组。数据库中的值是 Raw(32) 类型的 GUID,它以字节数组的形式返回。这是此表的记录 ID。我需要将它与另一个字节数组进行比较。第二个字节数组可以转换为字符串,但由于我无法从 linq 中调用方法,因此无法进行比较。
我绑定了一个自定义的“比较”方法,我还写了一个扩展方法。全部收到错误提示“LINQ to Entities 无法识别该方法”
这是我正在尝试做的代码。 where 子句导致此错误:
LINQ to Entities 无法识别方法 'Boolean SequenceEqual[Byte] (System.Collections.Generic.IEnumerable1[System.Byte], System.Collections.Generic.IEnumerable1[System.Byte])' 方法,并且此方法无法转换为存储表达式。"
EPSGEntities dbContex = new EPSGEntities();
byte[] byteArray = ParseHex(ViewState["itemID"].ToString());
var q = (from d in dbContex.EPSG_VSOREJECTS
where d.SDSRECID.SequenceEqual(byteArray)
select d).First();
【问题讨论】:
-
能不能先从DB加载,然后在本地副本上做sequenceEqual比较?
-
明确一点,你不能从
linq to sql调用方法,你可以在linq到对象中调用 -
我想避免将整个表存储到数据集/列表中,然后再进行查询。我希望从 linq 查询中得到一个结果
-
我找到了stackoverflow.com/questions/12903138/…,但不知道如何在这里应用
-
Linq to Entities 无法运行 C# 代码。它需要能够将您的查询转换为 SQL 语句。所以你要么需要重构,要么创建一个新方法来返回一个执行你想要的表达式。
标签: c# linq linq-to-sql