Ответ 1
Они должны давать одинаковый конечный результат (если я не ошибаюсь), но я считаю, что второе является более читаемым и лучше показывает исходное намерение.
Обновление
Я просто проверил вышеуказанное утверждение, используя 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);