Код: Выделить всё
var licenses = await _licenseRepository.SearchAsync(ct); //=> CT = CancellationToken
Код: Выделить всё
public sealed record Filter(LicenseTypeValues[] Id, string[] Name);
Давайте рассмотрим следующий результат запроса лицензий без фильтра:
Код: Выделить всё
{
"count": 5,
"results": [
{
"id": 15005,
"name": "Windows 2012",
"maxCpu": null,
"parentId": 15032,
"created": "2021-02-16T08:17:45Z"
},
{
"id": 15027,
"name": "Windows 2016",
"maxCpu": null,
"parentId": 15032,
"created": "2021-02-16T08:17:45Z"
},
{
"id": 15030,
"name": "Windows 2022",
"maxCpu": null,
"parentId": 15032,
"created": "2021-08-11T10:29:36Z"
},
{
"id": 15032,
"name": "Ubuntu 23",
"maxCpu": null,
"parentId": 15,
"created": "2023-05-22T14:56:11.93Z"
},
{
"id": 15032,
"name": "Ubuntu 24",
"maxCpu": null,
"parentId": 15,
"created": "2023-05-22T14:56:11.93Z"
}
]
}
Код: Выделить всё
["Windows 201", "Ubuntu 23"]
Код: Выделить всё
{
"count": 3,
"results": [
{
"id": 15005,
"name": "Windows 2012",
"maxCpu": null,
"parentId": 15032,
"created": "2021-02-16T08:17:45Z"
},
{
"id": 15027,
"name": "Windows 2016",
"maxCpu": null,
"parentId": 15032,
"created": "2021-02-16T08:17:45Z"
},
{
"id": 15032,
"name": "Ubuntu 23",
"maxCpu": null,
"parentId": 15,
"created": "2023-05-22T14:56:11.93Z"
}
]
}
Код: Выделить всё
var licenses = await _repository.FindAll().Where(x => filter.Name.Contains(x.Name)).ToArrayAsync();
Конечно, я мог бы просто выполнить итерацию с помощью цикла foreach и фильтровать каждый элемент один за другим, но мне бы хотелось найти более элегантное решение с использованием LinQ, если это возможно.Есть предложения?
Подробнее здесь: https://stackoverflow.com/questions/788 ... part-of-it
Мобильная версия