To clarify one of the answers. Note there is no way to distinguish both `#` inside `# == Nearest[#, 551.748][[1]]` in
Select[#, # == Nearest[#, 551.748][[1]] &] &
as you already noted. So, you need to give the outermost `#` a name and Function[...] is just for that. This one works:
Function[{l}, Select[l, # == First[Nearest[l, 551.748]] &]]
Personally, I don't like the `With` _trick_ above: if you need to give it a name, use the language construct for that. Then you do:
Function[{l}, Select[l, # == First[Nearest[l, 551.748]] &]] /@ {ln125,ln126,ln127}
Note that a Function[...] is already a (...&), so you don't need the usual ...& /@..., just Function[...] /@.
**P.S** If you do this often, this is, fix a value (i.e. `First[Nearest[l, 551.748]]`) inside another function of two or more parameters (i.e. `Equal` in your case) to have a function of the free parameters, then the following (and simple approach) can be useful
FixCurry[f_, v_] := f[v, ##] &;
So, `FixCurry[Equal, 3]` is `Equal[3,#] &`. And this can be used in your case like
Select[#, FixCurry[Equal, First[Nearest[#, 5.]]]] & /@ {ln125,ln126,ln127}
which avoids the inner `(..&)` via the `FixCurry` construct.