C# Установка переменной для результата оператора if - PullRequest
3 голосов
/ 29 апреля 2020

Я пытаюсь записать foreach l oop в l oop через массив номеров пользовательских лицензий и установить переменную в номер лицензии, где состояние номера лицензии совпадает с состоянием списка, в противном случае установить ln равным первый в массиве. Мой код здесь

var realEstateAgent = await realEstateAgentRepository.GetRealEstateAgentAsync(request.RealEstateAgentGuid);

            var listing = await repository.GetListingAsync(new GetListingRequest { Guid = request.ListingGuid });

            string realEstateAgentlicenseNumber = null;

            Array.ForEach(realEstateAgent.LicenseNumbers, licensNumber  =>
            {
                if (licenseNumber.State == listing.Listing.State)
                {
                    realEstateAgentlicenseNumber = licenseNumber.License;
                }
                else
                {
                    realEstateAgentlicenseNumber = realEstateAgent.LicenseNumbers[0].LicenseNumber.License;
                }
            });

Я пытаюсь понять и устранить ошибку, которую вижу здесь

The type arguments for method 'Array.ForEach<T>(T[], Action<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.

Ответы [ 5 ]

0 голосов
/ 29 апреля 2020

Я пытаюсь понять, можно ли упростить этот код. Я не уверен, что приведенное ниже сработает, но стоит попробовать!

Если realEstateAgent.LisenceNumber имеет тип IEnumerable, то мы можем сделать что-то вроде этого:

var realEstateAgentlicenseNumber = realEstateAgent.LicenseNumbers
                                  .Where(x => x.State == listing.Listing.State)
                                  .Select(x => x.License)

Если мы не найдем соответствия, realEstateAgentlicenseNumber будет нулевым или пустым. и в этом случае мы можем присвоить первое значение следующим образом:

var realEstateAgentlicenseNumber = realEstateAgent.LicenseNumbers.First()
0 голосов
/ 29 апреля 2020

Хорошо, вот что мы в итоге сделали, работали в нашем случае

    RealEstateAgentLicenseNumber =
                        listingResponse.RealEstateAgent.LicenseNumbers.FirstOrDefault(f => f.State == listingResponse.Listing.State)?.License ??
                        listingResponse.RealEstateAgent.LicenseNumbers.FirstOrDefault()?.License ??
                        string.Empty,
0 голосов
/ 29 апреля 2020
realEstateAgent.LicenseNumbers

это должен быть массив, убедитесь, что это массив, если его список попытается вызвать .ToArray ()

realEstateAgent.LicenseNumbers.ToArray ()

0 голосов
/ 29 апреля 2020

номер лицензии в этой строке написан с ошибкой:

Array.ForEach(realEstateAgent.LicenseNumbers, licensNumber  =>
0 голосов
/ 29 апреля 2020

Ошибка просто означает, что компилятор не может определить тип для T метода ForEach, который вы вызываете.

Попробуйте Array.ForEach<NameOfTheTypeOfTheItem>(...)

Тип будет любым вашим тип предметов в realEstateAgent.LicenseNumbers есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...