我试图从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翻译。
你们能帮我解决一下吗?
答案 0 :(得分:0)
在Linq to SQL中,您不能使用C#方法,在本例中为decrypt
。这适用于Linq对象,但不适用于Linq to SQL,因为整个linq查询转换为SQL查询,然后编译器无法识别您的方法。
为此,您可以将此linq代码转换为lambda表达式,并为解密创建Func<>
委托,并在where子句中使用它。