public static void Main()
var lastName1 = "AVeryLongLastName";
var lastName1OldSearchQuick = OldMethod(lastName1, true);
var lastName1NewSearchQuick = OldMethod(lastName1, true);
Console.WriteLine(lastName1OldSearchQuick);
Console.WriteLine(lastName1NewSearchQuick);
var lastName1OldSearchSlow = OldMethod(lastName1, false);
var lastName1NewSearchSlow = OldMethod(lastName1, false);
Console.WriteLine(lastName1OldSearchSlow);
Console.WriteLine(lastName1NewSearchSlow);
var lastName2OldSearchQuick = OldMethod(lastName2, true);
var lastName2NewSearchQuick = OldMethod(lastName2, true);
Console.WriteLine(lastName2OldSearchQuick);
Console.WriteLine(lastName2NewSearchQuick);
var lastName2OldSearchSlow = OldMethod(lastName2, false);
var lastName2NewSearchSlow = OldMethod(lastName2, false);
Console.WriteLine(lastName2OldSearchSlow);
Console.WriteLine(lastName2NewSearchSlow);
var lastName3OldSearchQuick = OldMethod(lastName3, true);
var lastName3NewSearchQuick = OldMethod(lastName3, true);
Console.WriteLine(lastName3OldSearchQuick);
Console.WriteLine(lastName3NewSearchQuick);
var lastName3OldSearchSlow = OldMethod(lastName3, false);
var lastName3NewSearchSlow = OldMethod(lastName3, false);
Console.WriteLine(lastName3OldSearchSlow);
Console.WriteLine(lastName3NewSearchSlow);
public static string OldMethod(string lastName, bool quickSearch)
var lastNameLength = lastName.Length;
var lastNameSearchText = String.Empty;
Func<int, string> setLastNameSearchText = length => lastNameLength >= length ? lastName.Substring(0, length) : String.Empty;
for (var indx = 3; indx >= 1; indx--)
lastNameSearchText = String.IsNullOrEmpty(lastNameSearchText) ? setLastNameSearchText(indx) : lastNameSearchText;
lastNameSearchText = setLastNameSearchText(1);
return lastNameSearchText += '%';
public static string NewMethod(string lastName, bool quickSearch)
var lastNameLength = lastName.Length;
var lastNameSearchText = String.Empty;
lastNameSearchText = lastNameSearchText.Substring(0, 3 >= lastNameLength ? 3 : lastNameLength);
lastNameSearchText = lastNameSearchText.Substring(0, 1);
return lastNameSearchText += '%';