Чтобы расширить ответ Дэниела Рирдона: к сожалению, невозможно запросить одно и то же поле с разными аргументами. В этой ситуации рекомендуется использовать псевдонимы:
https://graphql.org/learn/queries/#aliases
Однако вы можете настроить свой API так, чтобы он возвращал разные результаты на основе массива, который вы ' переходит к нему. Так, например, вы можете вернуть только одну запись, если в массиве только один элемент, много, если их много, или все записи, если массив пуст.
Вот некоторый гипотетический код того, как это может выглядеть:
public IEnumerable<Accounts> GetAccounts(int[] accountIds)
{
// if no items in array
if (accountIds.Length == 0)
{
// return all accounts
return Accounts.ToList();
}
// return only accounts that are in accountIds array
// if only one item is in array, then an IEnumerable with only one item will be returned
return Accounts
.Where(b => accountIds.Contains(b.AccountId))
.ToList();
}
Метод GetCharacters (int [] ids) в Hot Chocolate в примере Star Wars API также будет возвращать только один символ, если передан массив с одним идентификатором или несколько, если в массиве несколько элементов:
public IEnumerable<ICharacter> GetCharacters(int[] ids)
{
foreach (int id in ids)
{
if (_characters.TryGetValue(id, out ICharacter? c))
{
yield return c;
}
}
}