It is a very comman and tricky question which is generally asked during interview. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            FindSecondHightestNumber();
        }

        public static void FindSecondHightestNumber()
        {
            int[] myarray = new int[] {2,4,9,13,7,3,5,0,12};

            //First Way
            var result = (from a in myarray
                          orderby a descending
                          select a).Skip(1).First();
            Console.WriteLine("Second Highest value is : " + result);

            //Second Way
            int _largestValue = 0;
            int _secondValue = 0;

            foreach(var val in myarray)
            {
                if(val>_largestValue)
                {
                    _secondValue = _largestValue;
                    _largestValue = val;                  
                }
                else
                {
                    _secondValue = val;
                }
            }
            Console.WriteLine("Second Highest value is : " + _secondValue);

            Console.ReadLine();
        }
    }
}