LINQ!!
replace it with this:
List<string> Existing = new List<string>() { "abc", "xyf", "asder", "dhfth", "rert", "nhfju", "iulyuk", "qefwef", "deferwf", "wfwef", "fwer", "zxsg", "gewrg", "trewt", "fewr", "gwer", "rfewrfg", "kyu", "piol", "qfgthy", "rtgrh", "rtgtg", "rgtet", "geger", "mtmtey", "hgrwgtbgt rtg", "erg4twedc rtg", "wt45t", "wqfef", "bdvf", "zaqwe gt", "lkujdr", "brgtbhreth", "wefwegf", "qaddw", "gerg", "bdvsefgv" };
List<string> New = new List<string>() { "dasfwe", "xyf", "asder", "bgh", "wafwef", "liuk", "xwdewd", "qefwef", "deferwf", "erfwe", "fwer", "zxsg", "gewrg", "trewt", "fewr", "gwer", "rfewrfg", "kyu", "piol", "qfgthy", "rtgrh", "rtgtg", "rgtet", "xcewf", "mtmtey", "wdwd rtg", "erg4twedc rtg" };
Existing.Sort();
New.Sort();
List<string> Alphabets = new List<string>() { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" };
foreach (
var existingList in
from character in Alphabets
let existingList = Existing.Where(e => e.StartsWith(character)).ToList()
let newList = New.Where(n => n.StartsWith(character)).ToList()
from newItem in
(from newItem in newList from existingItem in existingList.Where(existingItem => newItem == existingItem)
select newItem)
select existingList)
{
Console.WriteLine("Match Found!");
}
PS: the remaining loop can also be removed depending on what needs to happen instead of "Console.WriteLine("Match Found!")" but this should be MUCH faster already.
PPS: I cheated and used ReSharper(tm) to produce the code
PPPS: from comments:
Existing
.Where(e=>e.length>0)
.Select(e=>new {full = e, first = e.ToCharArray().First()})
.Where(c=>c.first==character)
.Select(c=>c.full).ToList();
Existing
.Where(e=>e.length>0)
.Where(e=>e.ToCharArray().First()==character)
.ToList();