这个linq查询将如何执行

这个linq查询将如何执行,linq,entity-framework-4,Linq,Entity Framework 4,我有一个检索用户详细信息的功能 我在几块地上种过草。我想知道LINQ将如何执行实际的sql查询 public User GetUserByEmail(string email) { return _db.Users.Where(x => x.LastName.Decrypt() == "Patel").ToList(); } x.LastName.Decrypt()它会从sql中获取所有记录并对代码端的每个字段执行解密吗 如果我使用 public User GetUserBy

我有一个检索用户详细信息的功能

我在几块地上种过草。我想知道LINQ将如何执行实际的sql查询

public User GetUserByEmail(string email)
{
      return _db.Users.Where(x => x.LastName.Decrypt() == "Patel").ToList();
}
x.LastName.Decrypt()它会从sql中获取所有记录并对代码端的每个字段执行解密吗

如果我使用

public User GetUserByEmail(string email)
{
      return _db.Users.Where(x => x.LastName == "Patel".Encrypt()).ToList();
}

哪一个更好

调用
中的
.Decrypt()
,其中
函数将解密每行上的
LastName
。最好使用显示的.Encrypt()方法,该方法将调用一次'Encrypt',并将每个姓氏与“Pate1”的加密字符串进行比较。

除非通过调用
AsEnumerable()
ToList
,强制将数据带到内存中,否则很有可能第一个查询根本不起作用,或者
ToArray
,因为EF提供程序不知道如何将
加密
函数转换为SQL

另一方面,第二个查询应该可以正常工作,因为它是一个字符串到字符串的比较


此外,第二种查询方式允许您在无法使用
解密
对字符串进行“加密”时实施可能更安全的方案,例如,当您存储消息摘要时。

请提供
解密
定义。您是对的@dasblinkenlight,第一次查询将导致运行时错误