我正在尝试编写一个foreach循环,以循环通过用户许可证号码的数组,并将一个变量设置为许可证号码,其中许可证号码状态与列表状态匹配,否则将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.
该错误只是意味着编译器无法推断您正在调用的ForEach
方法的T
的类型。
尝试Array.ForEach<NameOfTheTypeOfTheItem>(...)
类型将是realEstateAgent.LicenseNumbers
中任何类型的项目。
此行的licenseNumber拼写错误:
Array.ForEach(realEstateAgent.LicenseNumbers, licensNumber =>
realEstateAgent.LicenseNumbers
这应该是一个数组,如果列表试图调用,请确保它是一个阵列。ToArray((
房地产经纪人。许可证编号。ToArray((
我想看看这段代码是否可以简化。我不确定下面的方法是否有效,但值得一试!
如果房地产经纪人。LisenceNumber是IEnumerable类型,那么我们可以做这样的事情:
var realEstateAgentlicenseNumber = realEstateAgent.LicenseNumbers
.Where(x => x.State == listing.Listing.State)
.Select(x => x.License)
如果找不到匹配项,realEstateAgentlicenseNumber将为null或为空。在这种情况下,我们可以分配第一个值如下:
var realEstateAgentlicenseNumber = realEstateAgent.LicenseNumbers.First()
好的,下面是我们最终所做的,在我们的案例中工作
RealEstateAgentLicenseNumber =
listingResponse.RealEstateAgent.LicenseNumbers.FirstOrDefault(f => f.State == listingResponse.Listing.State)?.License ??
listingResponse.RealEstateAgent.LicenseNumbers.FirstOrDefault()?.License ??
string.Empty,