Обычно вы используете «Где» так:
IEnumerable<TextBox> textBoxes = tbx.Where(x=>x.Name == "tbxLink");
, где textBoxes - IEnumerable<TextBox>
.
Но если вы знаете, что вам нужно только одно текстовое поле с таким именем
tbx.SingleOrDefault(x => x.Name == "tbxLink");
, который будет возвращать ноль (точнее default(TextBox)
), если текстовое поле с таким именем отсутствует,
или, альтернативно,
tbx.Single(x => x.Name == "tbxLink");
, которое вызывает исключениеесли текстовое поле с таким именем не существует.
Если имеется несколько текстовых полей с одинаковым именем, вы можете использовать
tbx.FirstOrDefault(x => x.Name == "tbxLink");
или
tbx.First(x => x.Name == "tbxLink");
Asпример выполнения этого кода в LINQPad работает как ожидалось:
void Main()
{
IEnumerable<TextBox> items = new List<TextBox>{
new TextBox{ Name = "One" },
new TextBox{ Name = "Two" },
new TextBox{ Name = "Three" },
new TextBox{ Name = "Four" },
};
items.Single (i => i.Name == "One").Dump();
}
class TextBox
{
public string Name {get;set;}
}
Я продублировал это с помощью WPF, например
private void Button_Click_1(object sender, System.Windows.RoutedEventArgs e)
{
IEnumerable<TextBox> textBoxes = grid.Children.OfType<TextBox>();
var textBox = textBoxes.Single(tb => tb.Name == "one");
Debug.WriteLine(textBox.Name);
}