【发布时间】:2011-09-01 03:42:36
【问题描述】:
感谢您提供的任何见解!
非常简单,我正在使用 LinqToSql 从数据库中调用一组联系人。其中两列“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;
}
【问题讨论】:
-
你能反转事情并加密你想要比较的姓氏,而不是解密然后与纯文本比较吗?类似 .Where(w => w.LastName == aes.EncryptString(LastNameToTestFor);
-
啊——好主意,除非我需要进行完全匹配搜索。我需要能够使用'starts-with',根据名字的第一个字母等进行过滤。谢谢你的想法!
标签: .net linq-to-sql gridview encryption