C# Eval Expression - LINQ Dynamic - TakeWhile

LINQ Dynamic TakeWhile Examples

C# Dynamic LINQ TakeWhile examples using an Expression Evaluator.

TakeWhile - Simple

This C# example uses the LINQ TakeWhile method with a dynamic expression to return elements starting from the beginning of the array until a number is hit that is not less than 6.

LINQ

private void uiTakeWhile_Simple_LINQ_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);

	var sb = new StringBuilder();

	sb.AppendLine("First numbers less than 6:");
		foreach (var n in firstNumbersLessThan6)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Dynamic

private void uiTakeWhile_Simple_LINQ_Dynamic_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstNumbersLessThan6 = numbers.TakeWhile(n => "n < 6");

	var sb = new StringBuilder();

	sb.AppendLine("First numbers less than 6:");
		foreach (var n in firstNumbersLessThan6)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.LinqDynamic, uiResult, sb);
}

LINQ Execute

private void uiTakeWhile_Simple_LINQ_Execute_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstNumbersLessThan6 = numbers.Execute<IEnumerable<int>>("TakeWhile(n => n < 6)");

	var sb = new StringBuilder();

	sb.AppendLine("First numbers less than 6:");
		foreach (var n in firstNumbersLessThan6)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

LINQ Execute Test
------------------------------
First numbers less than 6:
5
4
1
3

TakeWhile - Indexed

This C# example uses the LINQ Indexed TakeWhile method with a dynamic expression to return elements starting from the beginning of the array until a number is hit that is less than its position in the array.

LINQ

private void uiTakeWhile_Indexed_LINQ_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index);

	var sb = new StringBuilder();

	sb.AppendLine("First numbers not less than their position:");
		foreach (var n in firstSmallNumbers)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.Linq, uiResult, sb);
}

LINQ Dynamic

private void uiTakeWhile_Indexed_LINQ_Dynamic_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstSmallNumbers = numbers.TakeWhile((n, index) => "n >= index");

	var sb = new StringBuilder();

	sb.AppendLine("First numbers not less than their position:");
		foreach (var n in firstSmallNumbers)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.LinqDynamic, uiResult, sb);
}

LINQ Execute

private void uiTakeWhile_Indexed_LINQ_Execute_Click(object sender, EventArgs e)
{
	int[] numbers = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0};

	var firstSmallNumbers = numbers.Execute<IEnumerable<int>>("TakeWhile((n, index) => n >= index)");

	var sb = new StringBuilder();

	sb.AppendLine("First numbers not less than their position:");
		foreach (var n in firstSmallNumbers)
		{
			sb.AppendLine(n.ToString());
		}

	My.Result.Show(My.LinqResultType.LinqExecute, uiResult, sb);
}

Result

LINQ Execute Test
------------------------------
First numbers not less than their position: 
5 
4