感谢您提供帮助的任何见解!
很简单,我使用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;
}
答案 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()”。
一些额外的处理,但完成工作。