Как пройтись по коллекции и присваивать элемент этой коллекции в переменную?
У меня есть база данных с командами. Я записываю все эти команды в коллекцию:
private IEnumerable<BashData> _allCommands = new List<BashData>();
protected override void OnInitialized()
{
_allCommands = repository.GetAllCommands();
}
Теперь мне необходимо проходиться по этой коллекции с помощью стрелок, а промежуточные результаты выводить в поле, к которому привязана переменная. Вот мой html:
<input type="text" class="form-control" placeholder="Bash command" aria-label="Bash command"
aria-describedby="basic-addon2" @bind="_bashCommand" @onkeydown="OnKeyDown">
А вот код метода OnKeyDown:
private void OnKeyDown(KeyboardEventArgs e)
{
if (e.Key == "ArrowUp")
{
_bashCommand =
}
else if (e.Key == "ArrowDown")
{
_bashCommand =
}
}
Допустим, в коллекции есть: "help", "test", "git help", "git". По нажатию на стрелочку, в поле попадает команда help. Если еще раз нажать на стрелочку, то в поле должна появится команда test. Если обратиться к псевдокоду, то это будет так:
if(e.Key == "ArrowUp"){
_bashCommand = _allCommands.MoveNext();
}
if(e.Key == "ArrowDown"{
_bashCommand = _allCommands.MoveBack();
}
Все должно работать, как в cmd, где мы можем переключать введенные команды с помощью стрелочек.
//Изменил код
Я решил использовать List:
private List<string> _allCommands = new List<string>();
А вот обработчик нажатия на кнопки:
bool isEdit = true;
int index = 0;
void KeyHandler(KeyboardEventArgs e)
{
if (e.Key == "ArrowUp")
{
if (!isEdit)
{
isEdit = true;
index = 0;
}
else
{
index++;
if (index > _allCommands.Count() - 1) index = a.Count() - 1;
}
_bashCommand = _allCommands[index];
}
else if (e.Key == "ArrowDown")
{
if (!isEdit)
{
isEdit = true;
index = _allCommands.Count() - 1;
}
else
{
index--;
if (index < 0) index = 0;
}
_bashCommand = _allCommands[index];
}
}