FWIW: When energizing a "DC" Solenoid for low power consumption, its more efficient to drive the solenoid using a square wave output instead of steady DC. Once the core magnetization is saturated all of the extra energy dumped into the coil winding is disappated as heat. For better efficienct driver you want to start off with a duty cycle at near 100% and drop it to about 10% (depending on how big the core is). This can be done with a small microcontroller (ie 8 pin PIC microcontroller). Imagine a pulse train with a duty cycle like 100, 80, 60, 40, 30, 20, 10, 10, 10... If thats too complex than just driving it with a 50-30% duty cycle using a 555 Timer might also work.
Another low energy option is to use latching relays. These have a latching mechanism that retains the relay switch state after you turn off the coil power. Some latching relays use two separate coils (one turns on the relay and the other turns it off). Other switch by the polarity of the power applied to the coil. To operate a latching relay you apply a current pulse for about 1/2 sec which latches the relay into a new state.
For driving the soleniod, virtually any transistor will do (MOSFET, IGBT, BJT, etc). Even an SCR or Traic can be use if your power source is AC. For DC Solenoids, the Solenoid must be connected to the High Side of an NPN\N-Channel transistor ie Vdd = Solenoid = N-Channel Transisor = GND. It is recommend to use NPN, or N-Channel Transistors since they are more efficient then PNP\P-Channel Transistors. Its a good idea to connect a reverse recover diode in parallel with the "DC" Soleniod to prevent inductanct leakage spikes from damaging the transistor. When you turn off energy to the Solenoid coil it will create voltage spike . The reverse recovery diode will dispate the voltage spike. The reverse recovery Diode, is connected so that the diode cathode is connect to the VDD side solenoid connection and the Anode to the transistor side of the solenoid.
If you choose to power your Solenoid with steady DC current, be sure to measure the DC resistance of the Solenoid coil, then calculate how much current will flow ie ( I = V/R). Impediance of the Soleniod will fall to the DC resistance after the Solenoid core saturates. Either make sure that your switching transistor can handle that current load or increase the resistance by adding a resistor in series between the soleniod and the transistor to reduce the current flow. Although dropping the current too low, may prevent the solenoid from working. You can put a cap in parallel with the resistor so that the solenoid gets an extra start up kick. using the resistor with the parallel can is also another what to reduce current flow, but its not as efficient as using a PWM type I discussed above.
The EDN article is more efficient but its not as efficent as using a PWM control. This is because its running the switching transisor in linear mode, which the transistor is not fully on, and works like an adjustable resistor. While increasing the resistance in the transistor reduces the current supplied to the solenoid its still disappating energy in the transistor. By using a PWM drive control we are driving the solenoid to at or near its magnetic saturation power. and no or little current is wasted. The switching transistor also operates in an efficent state, becaus it quickly switches from off to its lowest resistance state which avoids energy being disappated as heat.
Note: Most Power Mosfets need 10 volts supplied to the gate in order to fully switch on. You either need to use a BJT transistor or a MOSFET driver to switch on the MOSFET, if your controlling it using a microcontroller or logic gates that operate at 5V/3.3V.