LINQ ile asal sayıların bulunması

1-100 arası asal sayıların bulunmasını tek bir LINQ sorgusu ile nasıl yapabiliriz?

Klasik yolla bir sayının asal sayı olup olmadığını şu methodla öğrenebilirsiniz:

bool AsalMi(int sayi)
{
  for (int i = 2; i < sayi; i++)
  {
    if (sayi % i == 0) return false;
  }
  return true;
}

1-100 arası asal sayıları bulmak için bir for döngüsü ile listeleme yapabilirsiniz.

Ama LINQ çıktı mertlik bozuldu diyoruz ya bakın 1-100 arası asal sayılar tek bir LINQ sorgusu ile nasıl bulunabilir:

public static IEnumerable<int> AsalSayilar(int sayi)
{
  var ints = Enumerable.Range(2, sayi - 1);
  return ints.Where(x => !ints
             .TakeWhile(y => y < x)
             .Any(y => x % y == 0));
}

static void Main(string[] args)
{
  var asalSayilar = AsalSayilar(100);
  asalSayilar.ToList().ForEach(Console.WriteLine);
}

Çıktısı ise şu şekilde:

Herkese kolay gelsin..