Сгенерированный SQL вернет весь термин, поэтому ваше второе утверждение обрушит именно то, что вам нужно.
Вы можете установить dataContext.Log = Console.Out
и посмотреть на различные результаты запроса.
Используя мой пример базы данных LINQPad, вот пример:
var dc = (TypedDataContext)this;
// 1st approach
var query = Orders.Select(o => o);
dc.GetCommand(query).CommandText.Dump();
query.ToDictionary(o => o.OrderID, o => o.OrderDate).Dump();
// 2nd approach
var query2 = Orders.Select(o => new { o.OrderID, o.OrderDate});
dc.GetCommand(query2).CommandText.Dump();
query2.ToDictionary(o => o.OrderID, o => o.OrderDate).Dump();
Сгенерированный SQL (или просто загляните на вкладку SQL LINQPad):
// 1st approach
SELECT [t0].[OrderID], [t0].[OrderDate], [t0].[ShipCountry]
FROM [Orders] AS [t0]
// 2nd approach
SELECT [t0].[OrderID], [t0].[OrderDate]
FROM [Orders] AS [t0]