Непонятно, почему вы зацикливаете и на Find
.Обычно вы будете звонить Find
, а не в цикле - это будет цикл для вас.Анонимные методы - ваши друзья здесь:
Name found = lstName.Find(delegate(Name name) {
return name.FirstName + name.LastName == x;
});
Если вы используете C # 3 (даже для .NET 2), вы можете использовать вместо этого лямбда-выражение:
Name found = lstName.Find(name => name.FirstName + name.LastName == x);
РЕДАКТИРОВАТЬ:Чтобы найти все имена в input
, вы можете использовать:
List<Name> matches = lstName.FindAll(delegate(Name name) {
string combined = name.FirstName + name.LastName;
return input.Contains(combined);
});
Обратите внимание, что это будет не очень эффективно, так как будет просматриваться весь input
на совпадение на каждый Name
.Однако более эффективные альтернативы являются более сложными - я думаю, что для вас важно понять, как этот код работает с самого начала.