Параллельная обработка по параметру предоставления запроса linq - PullRequest
0 голосов
/ 05 марта 2020
            List<ContactGroup> contactGroups = new List<ContactGroup>();
            Stopwatch stopwatch = new Stopwatch();
            stopwatch.Start();
            contactGroups.AddRange(dbEnt.ClientContactGroups.Where(x => x.ClientID == ClientID && x.IsDeleted == false).Select(x => new ContactGroup { ClientID = x.ClientID, ClientContactGroupID = x.ClientContactGroupID, ContactGroupName = x.ContactGroupName }).ToList());
            stopwatch.Stop();
            if (!string.IsNullOrEmpty(SearchText))
            {
                contactGroups.Where(x => x.ContactGroupName.Contains(SearchText)).ToList();
            }
            List<SP_GroupContacts_Result> groupContacts_Results = new List<SP_GroupContacts_Result>();
            stopwatch.Start();
            Parallel.ForEach(contactGroups, groups =>
            {
                groups.Contacts = new List<Contact>();
                groups.Contacts.AddRange((from cc in dbEnt.ClientContacts
                        join rt in dbEnt.ResponseTeamUserMappings on cc.ClientContactID equals rt.CMTMemberUserID
                        join cr in dbEnt.ClientRoles on rt.ClientRoleID equals cr.ClientRoleID
                        where cc.ClientContactGroupID == groups.ClientContactGroupID && cc.IsActive == true && cc.IsDeleted == false
                        select new Contact
                        {
                            ClientContactID= cc.ClientContactID,
                            FirstName = cc.FirstName,
                            LastName = cc.LastName,
                            ProfileImage = cc.ProfileImage,
                            RoleName = cr.ClientRoleName,
                            Email= cc.Email,
                            ContactNumber= cc.MobilePhone
                        }).ToList());
            });
            stopwatch.Stop();

Мне нужно выполнять эти процессы параллельно, но у меня нет никакой информации о параллельных процессах в c#. Я пробовал разные подходы, но не смог заставить его работать. Это происходит сбой в параллельной части. b__1 ()

Сообщение

Ссылка на объект не установлена ​​для экземпляра объекта.

...