.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Linq;
using System.Collections.Generic;
using System.Threading.Tasks;
					
public class Program
{
	public static async Task Main()
	{
		// Just for example ...
		bool condition(int conditionNr) {
			Console.WriteLine("Testing condition #{0}", conditionNr);
			return false;
		}
		
		// The expesinve Query
		var userId = 5;
		var expensiveDbAccess = new Lazy<Task<IEnumerable<int>>>(async () => {
			Console.WriteLine("Executing expensive query for User '{0}'", userId);
			await Task.Delay(1000); // "Doing some work"
			return new List<int>{1,2,3,4,5};
		});
		
		Console.WriteLine("Going down the rabbit hole ...");
		
		if(condition(1)){ Console.WriteLine("1"); }
		else if(condition(2)){ Console.WriteLine("2"); }
		else if(condition(3)){ Console.WriteLine("3"); }
		else if( (await expensiveDbAccess.Value).Contains(6) ){ Console.WriteLine("Contained 6"); }
		else if( (await expensiveDbAccess.Value).Contains(3) ){ Console.WriteLine("Contained 3"); }
		else if(condition(4)){ Console.WriteLine("4"); }
		else if(condition(5)){ Console.WriteLine("5"); }
	}
}
;