Они оба должны давать один и тот же конечный результат (если я не ошибаюсь), но я считаю, что второе более читабельно и лучше показывает исходное намерение.
Обновление
Я только что проверил приведенное выше утверждение с помощью LINQPad.На самом деле оба запроса производят один и тот же SQL.
Например:
context.SomeTable.Where(c => c.ParentId == null)
.Where(c => c.Name.Contains("F"))
.Select(c => c.Name);
Производит:
SELECT [t0].[Name]
FROM [SomeTable] AS [t0]
WHERE ([t0].[Name] LIKE @p0) AND ([t0].[ParentId] IS NULL)
Это тот же SQL, который создается:
context.SomeTable.Where(c => c.ParentId == null && c.Name.Contains("F"))
.Select(c => c.Name);
Вы могли бы также сжать вещи немного больше (что я считаю предпочтительным по тем же причинам, что и выше):
var firm = base.context.Firms.FirstOrDefault(f => f.SomeId == someId
&& f.AnotherId == anotherId);