A
A
algrandeth2021-12-17 16:29:24
C++ / C#
algrandeth, 2021-12-17 16:29:24

How to merge array and array of arrays by key?

I have one list.

var result = (from cab in cabinets
                         join mod in modemsCount on cab.OrganizationID equals mod.OrganizationID into modCount
                         from modcount in modCount.DefaultIfEmpty()
                         join objectc in objectCount on cab.OrganizationID equals objectc.OrganizationID into objectcCount
                         from objectccount in objectcCount.DefaultIfEmpty()
                         join modActive in modemsActiveCount on cab.OrganizationID equals modActive.OrganizationID into modActiveCount
                         from modActivecount in modActiveCount.DefaultIfEmpty()
                         join device in deviceCount on cab.OrganizationID equals device.OrganizationID into devCount
                         from devcount in devCount.DefaultIfEmpty()
                         join deviceActive in deviceActiveCount on cab.OrganizationID equals deviceActive.OrganizationID into devActiveCount
                         from devActivecount in devActiveCount.DefaultIfEmpty()
                         join regul in regulCount on cab.OrganizationID equals regul.OrganizationID into RegulCount
                         from Regulcount in RegulCount.DefaultIfEmpty()
                         join regulActive in regulActiveCount on cab.OrganizationID equals regulActive.OrganizationID into RegulactiveCount
                         from RegulActivecount in RegulactiveCount.DefaultIfEmpty()
                         join TVC in TVCount on cab.OrganizationID equals TVC.OrganizationID into TVCCount
                         from TVCcount in TVCCount.DefaultIfEmpty()
                         join TVAC in TVActiveCount on cab.OrganizationID equals TVAC.OrganizationID into TVACCount
                         from TVACcount in TVACCount.DefaultIfEmpty()
                         join ContourC in ContourCount on cab.OrganizationID equals ContourC.OrganizationID into CONTOURCount
                         from CONTOURcount in CONTOURCount.DefaultIfEmpty()
                         join ContourActiveC in ContourActiveCount on cab.OrganizationID equals ContourActiveC.OrganizationID into CONTOURActiveCount
                         from CONTOURActivecount in CONTOURActiveCount.DefaultIfEmpty()
                         join userC in userCount on cab.OrganizationID equals userC.OrganizationID into userCCount
                         from userCcount in userCCount.DefaultIfEmpty()
                         join userAC in userActiveCount on cab.OrganizationID equals userAC.OrganizationID into userACCount
                         from userACcount in userACCount.DefaultIfEmpty()
                         join userWeb in userwebcabCount on cab.OrganizationID equals userWeb.OrganizationID into userWebCount
                         from userWebcount in userWebCount.DefaultIfEmpty()
                         select new 
                         {
                             OrganizationID = cab.OrganizationID,
                             CabinetName = cab.CabinetName,
                             CabinetURL = cab.CabinetURL,
                             ModemCount = modcount?.NumberOfRecords ?? 0,
                             ObjectCount = objectccount?.NumberOfRecords ?? 0,
                             ModemActiveCount = modActivecount?.NumberOfRecords ?? 0,
                             DeviceCount = devcount?.NumberOfRecords ?? 0,
                             DeviceActiveCount = devActivecount?.NumberOfRecords ?? 0,
                             RegulatorCount = Regulcount?.NumberOfRecords ?? 0,
                             RegulatorActiveCount = RegulActivecount?.NumberOfRecords ?? 0,
                             TVCount = TVCcount?.NumberOfRecords ?? 0,
                             TVActiveCount = TVACcount?.NumberOfRecords ?? 0,
                             ContourCount = CONTOURcount?.NumberOfRecords ?? 0,
                             ContourActiveCount = CONTOURActivecount?.NumberOfRecords ?? 0,
                             UserCount = userCcount?.NumberOfRecords ?? 0,
                             UserActiveCount = userACcount?.NumberOfRecords ?? 0,
                             UserMobileCount = userWebcount?.NumberOfRecords ?? 0
                         }).ToList();


I need to merge it with another collection, but that one is already an array of arrays:

61bc901a377db494171269.png

var urls = result.Select(a => a.CabinetURL).Distinct().ToList();
            List<JObject> jsonDataList = new List<JObject>();
            for (int i = 0; i < 30; i++)
            {
                
                string jsonData = org.GetDataHttp(urls[i], 1, 250); // Получение сделок компании по ссылке
                if (string.IsNullOrEmpty(jsonData)) { Console.WriteLine([email protected]"{i}, continue"); continue; } // Если такой ссылки нету в амосрм - continue

                JObject z = JObject.Parse(jsonData);
                z["_embedded"]["url"] = urls[i]; // Добавление искомой ссылки в результат для дальнейшего джойна
                Console.WriteLine([email protected]"Data finded at index {i}");
                jsonDataList.Add(z);
            }

            List<ICollection> leadData_List = new List<ICollection>();
            for (int i = 0; i < jsonDataList.Count; i++)
            {
                var lead = jsonDataList[i];
                var url = lead["_embedded"]["url"];
                var leadData = lead["_embedded"]["leads"].Select(a => new
                {
                    id = (int)a["id"],
                    name = (string)a["name"],
                    url = url
                }).ToList().ToList();
            }


I need to combine these two collections by URL key. I tried it in a loop, pulling out lists one at a time, and outputting them to a variable, and simply by index - it didn’t work. Maybe he didn't do it right.
Are there any ways to solve this problem?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question