У меня есть CloudCredential таблица в моем проекте. В таблице у меня есть 4 типа (LIBVIRT, AWS, OPENSTACK, AZURE) (enum) и разные размеры полей для каждого из них. Структура таблицы выглядит как
{
"id": 1,
"cloudType": 2,
"name": "CedricOpenstack",
"organization": null,
"organizationId": 1,
"azureSubscriptionId": null,
"azureClientId": null,
"azureClientSecret": null,
"azureTenantId": null,
"openStackUser": "xxxx",
"openStackPassword": "xxx",
"openStackUrl": "xxx",
"openStackProject": "xxx",
"openStackDomain": "default",
"openStackRegion": "RegionOne",
"openStackPublicNetwork": "public",
"openStackImportNetwork": false,
"awsSecretAccessKey": null,
"awsAccessKeyId": null,
"awsDefaultRegion": null,
"projects": []
},
У меня есть такой метод.
[HttpGet]
public async Task<IActionResult> GetLibvirtCredentials([FromQuery]string
projectName)
{
var result = await (from project in _context.Projects
join cloud in _context.CloudCredentials on project.CloudCredentialId equals
cloud.Id
where project.Name == projectName
select new
{
CloudName = cloud.Name,
CloudType = cloud.CloudType.ToString("G"),
OrganizationName = cloud.Organization.Name,
ProjectName = project.Name
}).ToListAsync();
return Ok(result);
}
Проблема в том, что я хотел бы выбрать в соответствии с типом облака, если тип облака = 2 (OPENSTACK) также выберите поля, подходящие для этого (openStackUser, openStackProject и т. д. c.) Возможно ли включить оператор if внутри select.
PS CloudType - это Dynami c, который изменяется в соответствии с projectName, и мне нужно несколько, если logi c внутри выбора.