Linq - Entity Framework - расшифровывает значения в объект, используя AsQueryable () - PullRequest
0 голосов
/ 25 октября 2018

Я запрашиваю Entity Framework, используя AsQueryable, так как я не хочу, чтобы он вошел в память, поскольку есть много записей, которые он вернет.Но мне нужно расшифровать определенные значения при выборе значений в объекте.

Если бы я использовал 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);
}

Любойидеи о том, как я могу ускорить процесс?Можно ли расшифровать значения при первом вызове?

Jon

...