Q:

How to repeat until the correct information is provided in c#?

I am currently writing a program where I have to 
1) Giving user some options: 1.Search by name? 2. Search by date of birth?
2) If user selects search by name, ask them to put first name and then give the output
3) If user selects search by date of birth, ask them to put date of birth with format (MM/DD/YYYY) and then give the output.
I have to Repeat the options if the validation failed or couldn’t find the data.
I am struggling with the concept of repeating the options. ANy help is extremely appreciated. 
My code so far
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Week2Tutorial
{
class Program

    class Student
    { 
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string Lastname { get; set; }
        public DateTime DOB { get; set; }
        public string Gender { get; set; }

    }

    static void Main(string[] args)
    {

        var students = new List<Student>()
        {
            new Student() { Id = 1,FirstName = "Min Chul",Lastname = "Shin",DOB = new DateTime(2010,01,01),Gender = "Male"},
            new Student() { Id = 2,FirstName = "Nicky", Lastname = "Lauren", DOB = new DateTime(2009, 01, 01), Gender = "Female"},
            new Student() { Id = 3, FirstName = "Amy", Lastname = "Park", DOB = new DateTime(2008, 01, 01), Gender = "Female" },
            new Student() { Id = 4, FirstName = "Aurelie", Lastname = "Adair", DOB = new DateTime(2007, 01, 01), Gender = "Female" }

        };

        //foreach (var x in students)
        //{
        //    Console.WriteLine("Id = {0}, FirstName = {1}, Lastname = {2}, DOB = {3}, Gender = {4}",x.Id,x.FirstName,x.Lastname,x.DOB,x.Gender);
        //}

        Console.WriteLine(" Please Choose one of the options:");
        Console.WriteLine("1> Search by first name");
        Console.WriteLine("2> Search by date of birth");
        switch ( Convert.ToInt32(Console.ReadLine()))
        {
            case 1:
                Console.WriteLine("You choose:1");
                Console.WriteLine("Type your first name:");
                var a = Console.ReadLine();

                var case1 = students.Where(x=>x.FirstName==a);

                if (case1.Count()!=0)
                {
                    Console.WriteLine("Found! Here are the details:");
                    foreach (var x in case1)
                    {
                        Console.WriteLine("Name: {0}{1} D.O.B:{2} and Gender{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }

                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                }
                break;

            case 2:
                Console.WriteLine("You choose:2");
                Console.WriteLine("Enter your Date of Birth in format MM/DD/YYYY:");

                var b = DateTime.Parse(Console.ReadLine());
                //Console.WriteLine(b);
                //Console.ReadLine();

                    var case2 = students.Where(x => x.DOB == b);
                if (case2.Count() != 0)
                {
                    Console.WriteLine("Found! Here are your details");
                    foreach (var x in case2)
                    {
                        Console.WriteLine("Name:{0} {1} DOB:{2} Gender:{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }
                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                } 
                break;
                default:
                Console.WriteLine("Please enter the valid option");
                break;

        }

    }
}

}

A:

It can be Done be with do while loop here is the general syntax of do while Loop
do {
    code to be executed;
} while (condition is true);

what is do while loop it is an endless loop that is executes the code till the condition is true.
In Your Case we are taking a new varibale temp which is intially zero means no 
result if any of your switch case gets true and find results according to user's search query the count of that result will be copied to temp variable now temp   no longer have zero value means condition is false means the code will not be executed again 
You Just Need to start an endless loop till the condition is true
do{
var temp=0; ///Temporary variable to check the result count
//intially variable b will be zero because INtially result count is zero

  Console.WriteLine(" Please Choose one of the options:");
        Console.WriteLine("1> Search by first name");
        Console.WriteLine("2> Search by date of birth");
        switch ( Convert.ToInt32(Console.ReadLine()))
        {
            case 1:
                Console.WriteLine("You choose:1");
                Console.WriteLine("Type your first name:");
                var a = Console.ReadLine();

                var case1 = students.Where(x=>x.FirstName==a);
                   temp=case1.Count();    //Getting result count in another variable
                if (case1.Count()!=0)
                {
                    Console.WriteLine("Found! Here are the details:");
                    foreach (var x in case1)
                    {
                        Console.WriteLine("Name: {0}{1} D.O.B:{2} and Gender{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }

                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                }
                break;

            case 2:
                Console.WriteLine("You choose:2");
                Console.WriteLine("Enter your Date of Birth in format MM/DD/YYYY:");

                var b = DateTime.Parse(Console.ReadLine());
                //Console.WriteLine(b);
                //Console.ReadLine();

var case2 = students.Where(x => x.DOB == b);
temp=case2.Count();    //Getting result count in another variable
                if (case2.Count() != 0)
                {
                    Console.WriteLine("Found! Here are your details");
                    foreach (var x in case2)
                    {
                        Console.WriteLine("Name:{0} {1} DOB:{2} Gender:{3}", x.FirstName, x.Lastname, x.DOB, x.Gender);
                    }
                }
                else
                {
                    Console.WriteLine(" Enter the correct information");

                } 
                break;
                default:
                Console.WriteLine("Please enter the valid option");
                break;

        }
}while(temp==0);   ////Endless Loop while result is zero

intially temp is equal to zero means result count is zero 
so it will  again intiate the loop However if there is any result 
that means temp is not equal to zero it will not execute the code

