Both lpn.prefixand lpn.numberare estimated as g.Select(...), so in fact they are IEnumerable<T>(in the same way as the error message announces it).
g.Select(...).FirstOrDefault() , T IEnumerable<T>.
Update:
, lpn.prefix lpn.number , - - :
sPhoneNumbers = String.Join("; ",
lpn.prefix.Select((p, i) =>
String.Format("({0}){1}",
p,
lpn.numbers.Skip(i).Take(1).FirstOrDefault())));
Enumerable.Zip, @Chris:
sPhoneNumbers = String.Join("; ",
lpn.prefix.Zip(lpn.numbers,
(s, s1) => string.Format("({0}){1}", s, s1)));