How about
using (var linesDisposable = File.ReadLines(fileName) as IDisposable)
{
var lines = linesDisposable as IEnumerable<string>;
Parallel.ForEach<string>(lines, line => {
//Process(line);
});
}
Notice that 'using + IDisposable' is there as a matter of best practice. The underlying line-stream implements IDisposable and it's prudent to put it to good use. If we omit 'using' then if/when the call to 'Process()' throws an exception the stream won't get disposed automatically which can cause all sorts of issues down the road because the file will be locked by underlying OS (so we won't be able to delete it etc).
Footnote: If you are using dotnet-core you may also want to simplify nesting a bit like so:
using var linesDisposable = File.ReadLines(fileName) as IDisposable;
var lines = linesDisposable as IEnumerable<string>;
Parallel.ForEach<string>(lines, line => {
//Process(line);
});