Как получить множественное значение в массиве из linqQuery из цикла foreach? - PullRequest
0 голосов
/ 05 мая 2018

Привет! Я хочу получить результат моего запроса в массиве, который выполняется в цикле foreach, у меня есть свой собственный класс, но всякий раз, когда я пытаюсь сохранить его в переменной, он показывает ошибку:

невозможно преобразовать genriccustom class в мой пользовательский класс

var userName = HttpContext.Current.User.Identity.Name;

                    var result = entities.USERS.SingleOrDefault(x => x.USER_NAME.Equals(userName, StringComparison.OrdinalIgnoreCase));


                    var Result = (from p in entities.Apps where p.USERID == result.USERID select p).ToList();

                    var children = new List<InsuredSummary>();

                    foreach (var queryresult in Result)
                    {
                        var query_result = (from b in entities.USERS
                                                // join c in entities.APP_INFORMATION on Result.INSURED_APPLICATION_ID equals c.INSURED_APPLICATION_ID
                                                // join d in entities.APP_INFO_VEHICLE on Result.INSURED_APPLICATION_ID equals d.INSURED_APPLICATION_ID
                                                //  join e in entities.APP_INFO_VEHICLE_OPTIONS_ACCESSORIES on Result.INSURED_APPLICATION_ID equals e.INSURED_APPLICATION_ID
                                            join f in entities.Apps.Where(y => y.INSURED_APPLICATION_ID == queryresult.INSURED_APPLICATION_ID) on b.USERID equals f.USERID
                                            select new
                                            //USER
                                            // InsuredSummary
                                            {
                                                USERID = b.USERID,
                                                //INSURED_APPLICATION_ID = queryresult.INSURED_APPLICATION_ID,
                                                //User
                                                USER_NAME = b.USER_NAME,
                                                INSURED_FIRST_NAME = b.INSURED_FIRST_NAME,
                                                INSURED_LAST_NAME = b.INSURED_LAST_NAME,
                                                INSURED_EMAIL = b.INSURED_EMAIL,

                                                //App_Information


                                            }).ToList();

                       // Want to save  query_result in Array[]

                    }

                    return query_result;


                }

1 Ответ

0 голосов
/ 05 мая 2018

Это невозможно, потому что в цикле foreach каждый раз, когда вы создаете анонимный тип в своем запросе, и вы не можете объединить их все в один массив. Для этого лучше сначала получить все insuredApplicationID, а затем в одном запросе всех пользователей, имеющих этот идентификатор в своих приложениях.

var insuredApplicationIDs = Result.Select(r => r.INSURED_APPLICATION_ID);
var queryResaut = (from b in entities.USERS
                   join f in entities.Apps.Where(y => insuredApplicationIDs.Contains(y.INSURED_APPLICATION_ID)) on b.USERID equals f.USERID
                                        select new
                                        {
                                            USERID = b.USERID,
                                            //INSURED_APPLICATION_ID = queryresult.INSURED_APPLICATION_ID,
                                            //User
                                            USER_NAME = b.USER_NAME,
                                            INSURED_FIRST_NAME = b.INSURED_FIRST_NAME,
                                            INSURED_LAST_NAME = b.INSURED_LAST_NAME,
                                            INSURED_EMAIL = b.INSURED_EMAIL,

                                            //App_Information
                                        }).ToArray()
...