Linqdatasource过滤后发布数据库检索

时间:2011-09-01 03:42:37

标签: .net linq-to-sql gridview encryption

感谢您提供帮助的任何见解!

很简单,我使用LinqToSql从数据库中调用一组Contacts。其中两列“FirstName”和“LastName”已加密。

我在包含的代码中看到了它们即时解密它们。但是,我还想根据LastName进行过滤。问题是如果我在语句中进行比较,它会将加密值与文本值进行比较。

我需要以某种方式获取我的gridview的结果数据,然后在事实之后过滤它,而不是再次基于数据库值,而是使用我已经拥有的数据(和解密数据)。

想法?谢谢!

    protected void ContactsLDS_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
    DatabaseDataContext db = new DatabaseDataContext();

    MyAES aes = new MyAES();

    var v1 = from s in db.Contacts
             select new Contact()
             {
                 ContactId = s.ContactId,
                 FirstName = (s.FirstName == null ? "" : aes.DecryptString(s.FirstName)),
                 LastName = (s.LastName == null ? "" : aes.DecryptString(s.LastName)),
             };

    e.Result = v1;
}

1 个答案:

答案 0 :(得分:1)

这两个帖子帮我回答了这个问题:

Linq "Could not translate expression... into SQL and could not treat it as a local expression."

Gridview using a generic list as DataSource and Auto-generating columns

我刚开始以加密格式抓取数据,然后对其进行第二次查询并对其进行解密。最后,当我想过滤数据时,我会运行第三个,运行“where str.startswith()”。

一些额外的处理,但完成工作。