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.