diff --git a/csharp/tutorials/RangesIndexes/IndicesAndRanges.cs b/csharp/tutorials/RangesIndexes/IndicesAndRanges.cs
deleted file mode 100644
index 8675e32359c..00000000000
--- a/csharp/tutorials/RangesIndexes/IndicesAndRanges.cs
+++ /dev/null
@@ -1,151 +0,0 @@
-using System;
-using System.Linq;
-
-namespace RangesIndexes
-{
- class IndicesAndRanges
- {
- //
- private string[] words = new string[]
- {
- // index from start index from end
- "The", // 0 ^9
- "quick", // 1 ^8
- "brown", // 2 ^7
- "fox", // 3 ^6
- "jumped", // 4 ^5
- "over", // 5 ^4
- "the", // 6 ^3
- "lazy", // 7 ^2
- "dog" // 8 ^1
- };
- //
-
- internal int Syntax_LastIndex()
- {
- //
- Console.WriteLine($"The last word is {words[^1]}");
- //
- return 0;
- }
-
- internal int Syntax_Range()
- {
- //
- string[] quickBrownFox = words[1..4];
- foreach (var word in quickBrownFox)
- Console.Write($"< {word} >");
- Console.WriteLine();
- //
- return 0;
- }
-
- internal int Syntax_LastRange()
- {
- //
- string[] lazyDog = words[^2..^0];
- foreach (var word in lazyDog)
- Console.Write($"< {word} >");
- Console.WriteLine();
- //
- return 0;
- }
-
- internal int Syntax_PartialRange()
- {
- //
- string[] allWords = words[..]; // contains "The" through "dog".
- string[] firstPhrase = words[..4]; // contains "The" through "fox"
- string[] lastPhrase = words[6..]; // contains "the, "lazy" and "dog"
- foreach (var word in allWords)
- Console.Write($"< {word} >");
- Console.WriteLine();
- foreach (var word in firstPhrase)
- Console.Write($"< {word} >");
- Console.WriteLine();
- foreach (var word in lastPhrase)
- Console.Write($"< {word} >");
- Console.WriteLine();
- //
- return 0;
- }
-
- internal int Syntax_IndexRangeType()
- {
- //
- Index the = ^3;
- Console.WriteLine(words[the]);
- Range phrase = 1..4;
- string[] text = words[phrase];
- foreach (var word in text)
- Console.Write($"< {word} >");
- Console.WriteLine();
- //
- return 0;
- }
-
- internal int Syntax_WhyChosenSemantics()
- {
- //
- int[] numbers = Enumerable.Range(0, 100).ToArray();
- int x = 12;
- int y = 25;
- int z = 36;
-
- Console.WriteLine($"{numbers[^x]} is the same as {numbers[numbers.Length - x]}");
- Console.WriteLine($"{numbers[x..y].Length} is the same as {y - x}");
-
- Console.WriteLine("numbers[x..y] and numbers[y..z] are consecutive and disjoint:");
- Span x_y = numbers[x..y];
- Span y_z = numbers[y..z];
- Console.WriteLine($"\tnumbers[x..y] is {x_y[0]} through {x_y[^1]}, numbers[y..z] is {y_z[0]} through {y_z[^1]}");
-
- Console.WriteLine("numbers[x..^x] removes x elements at each end:");
- Span x_x = numbers[x..^x];
- Console.WriteLine($"\tnumbers[x..^x] starts with {x_x[0]} and ends with {x_x[^1]}");
-
- Console.WriteLine("numbers[..x] means numbers[0..x] and numbers[x..] means numbers[x..^0]");
- Span start_x = numbers[..x];
- Span zero_x = numbers[0..x];
- Console.WriteLine($"\t{start_x[0]}..{start_x[^1]} is the same as {zero_x[0]}..{zero_x[^1]}");
- Span z_end = numbers[z..];
- Span z_zero = numbers[z..^0];
- Console.WriteLine($"\t{z_end[0]}..{z_end[^1]} is the same as {z_zero[0]}..{z_zero[^1]}");
- //
- return 0;
- }
-
- internal int ComputeMovingAverages()
- {
- //
- int[] sequence = Sequence(1000);
-
- for(int start = 0; start < sequence.Length; start += 100)
- {
- Range r = start..(start+10);
- var (min, max, average) = MovingAverage(sequence, r);
- Console.WriteLine($"From {r.Start} to {r.End}: \tMin: {min},\tMax: {max},\tAverage: {average}");
- }
-
- for (int start = 0; start < sequence.Length; start += 100)
- {
- Range r = ^(start + 10)..^start;
- var (min, max, average) = MovingAverage(sequence, r);
- Console.WriteLine($"From {r.Start} to {r.End}: \tMin: {min},\tMax: {max},\tAverage: {average}");
- }
-
- (int min, int max, double average) MovingAverage(int[] subSequence, Range range) =>
- (
- subSequence[range].Min(),
- subSequence[range].Max(),
- subSequence[range].Average()
- );
-
- int[] Sequence(int count) =>
- Enumerable.Range(0, count).Select(x => (int)(Math.Sqrt(x) * 100)).ToArray();
- //
-
- return 0;
- }
- }
-}
diff --git a/csharp/tutorials/RangesIndexes/Program.cs b/csharp/tutorials/RangesIndexes/Program.cs
deleted file mode 100644
index 236aa180891..00000000000
--- a/csharp/tutorials/RangesIndexes/Program.cs
+++ /dev/null
@@ -1,27 +0,0 @@
-using System;
-
-namespace RangesIndexes
-{
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("========== Starting Index and Range Samples. ==========");
- var indexSamples = new IndicesAndRanges();
- Console.WriteLine(" ========== Last Index. ==========");
- indexSamples.Syntax_LastIndex();
- Console.WriteLine(" ========== Range. ==========");
- indexSamples.Syntax_Range();
- Console.WriteLine(" ========== Last Range. ==========");
- indexSamples.Syntax_LastRange();
- Console.WriteLine(" ========== Partial Range. ==========");
- indexSamples.Syntax_PartialRange();
- Console.WriteLine(" ========== Index and Range types. ==========");
- indexSamples.Syntax_IndexRangeType();
- Console.WriteLine(" ========== Why this syntax. ==========");
- indexSamples.Syntax_WhyChosenSemantics();
- Console.WriteLine(" ========== Scenario. ==========");
- indexSamples.ComputeMovingAverages();
- }
- }
-}
diff --git a/csharp/tutorials/RangesIndexes/RangesIndexes.csproj b/csharp/tutorials/RangesIndexes/RangesIndexes.csproj
deleted file mode 100644
index 958d2f1daae..00000000000
--- a/csharp/tutorials/RangesIndexes/RangesIndexes.csproj
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
- Exe
- netcoreapp3.0
-
-
-