我正在使用AsQueryable
查询Entity Framework,因为我不希望它进入内存,因为它会带回很多记录。但是在将值选择到对象中时,我需要解密某些值。
如果我要使用ToList()
,则先执行代码,然后在foreach循环中对其进行解密,它可以工作-但速度很慢。
这是我的一些代码:
var myList = db.Accounts.Include("ProfileDetails").AsNoTracking().Where(x => !x.IsDeleted && x.ProfileDetails.IC_Garage.Where(u=>u.Id == garage.Id).Any())
.Select(a => new { a.Id, a.RoleId, a.ProfileId, a.Email })
.AsQueryable()
.Join(db.Profiles
.Select(p => new { p.Id, p.FirstName, p.LastName, p.IC_Units, p.EmergencyContact1, p.EmergencyContact2, p.IC_TelephoneBook, p.Salt, p.NextOfKin })
.AsQueryable(), profile => profile.ProfileId, userProfile => userProfile.Id, (profile, userProfile) => new { profile, userProfile })
.Select(s => new MyGarageList
{
EmergencyContact1 = s.userProfile.EmergencyContact1, Salt = s.userProfile.Salt
}).ToList();
这是我真的不想做的事情,因为它减慢了进度
List<MyGarageList> filteredGarages = new List<MyGarageList>();
foreach (MyGarageList garage in myList)
{
string emrgName1 = !string.IsNullOrEmpty(garage.EmergencyContact1) ? EL.DecryptText(garage.EmergencyContact1, garage.Salt, WebsiteKey) : "";
MyGarageList newMyList = new MyGarageList()
{
EmergencyContact1 = emrgName1
};
filteredGarages.Add(newMyList);
}
关于如何加快流程的任何想法?我可以在第一次通话中解密这些值吗?
乔恩