CSharp · Console
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"); }
}
}