Linq to Sql where condition String NotSupported Exception

时间:2015-06-02 19:06:58

标签: c# linq linq-to-sql

我试图从ASP.net表中提取密码长度,使用以下linq到sql查询

(from t1 in Aspnet_Users join t2 in Aspnet_Memberships
on t1.UserId equals t2.UserId
where decrypt(t2.Password).Length< 8 ||
  decrypt(t2.Password).Length>16
  select new { t1.UserName,
  t2.Email,
  Length=decrypt(t2.Password).Length})

但是当我尝试运行此代码时。我收到以下错误。

NotSupportedException:Method&#39; System.String a(System.String)&#39;没有受支持的SQL翻译。

你们能帮我解决一下吗?

1 个答案:

答案 0 :(得分:0)

在Linq to SQL中,您不能使用C#方法,在本例中为decrypt。这适用于Linq对象,但不适用于Linq to SQL,因为整个linq查询转换为SQL查询,然后编译器无法识别您的方法。

为此,您可以将此linq代码转换为lambda表达式,并为解密创建Func<>委托,并在where子句中使用它。