Чтобы найти подходящего человека по имени, отфильтруйте свою очередь по имени, а затем найдите все оставшиеся совпадения. Возьмите первое совпадение и распечатайте его пользователю, предполагая, что в вашей очереди может быть только одно совпадение. Если бы person
был классом вместо структуры, вы могли бы также просто использовать FirstOrDefault
и проверить на нулевое значение, но со структурой это могло бы быть самым простым способом.
var matchingPeopele = personQueue.Where(p => p.name == personStruct.name);
if (matchingPeopele.Any())
{
var match = matchingPeopele.First();
Console.WriteLine(match.name);
Console.WriteLine(match.bday);
Console.WriteLine(match.age);
}
else
{
Console.WriteLine("Doesn't exist!");
}
Что касается вашего комментария, что ваш учитель еще не покрыл LINQ, вот еще одна версия. На данный момент я в основном делаю вашу домашнюю работу для вас, но, пожалуйста, постарайтесь действительно понять, что происходит, когда вы пробуете код.
static void Main(string[] args)
{
person personStruct = new person();
Queue<person> personQueue = new Queue<person>();
Console.WriteLine("Type a name");
personStruct.name = Console.ReadLine();
var personFound = false;
foreach(var p in personQueue)
{
if (p.name == personStruct.name)
{
personFound = true;
Console.WriteLine(p.name);
Console.WriteLine(p.bday);
Console.WriteLine(p.age);
break;
}
}
if (!personFound)
{
Console.WriteLine("Doesn't exist!");
}
}