私には、提示いただいた例題を while や Linq to Objects を使って解決するという発想が出てこないです。
なので「while文をLINQ to Objectsに書き換え」については案が出てきません。せっかく例題を提示いただいたのにすみませんが、他の方の回答をお待ちください。
結局は、適材適所とか、組織のコーディングルールとか、後は個人の好みの問題とかで考える話になるのではと思います。
ちなみに、個人の好みで書かせていただけると、以下のようになります。
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
int[] array = new int[] { 1, 2, 3, 4 };
int findValue = 2;
int index = -1;
// 自分にとって一目でわかるように書くのが好みです
for (int i = 0; i < array.Length; i++)
{
if (array[i] % 2 == 0 && array[i] == findValue)
{
index = i;
break;
}
}
Console.WriteLine(index);
Console.WriteLine("--------------------------------");
// .NET のライブラリ List<T>.Sort メソッドを使うのが良さそう
int[] array2 = new int[] { 15, 1, 19, 21, 8, 15 };
var list = array2.ToList();
list.Sort();
foreach(int value in list)
{
Console.WriteLine(value);
}
}
}
}
結果は: