LINQ - разница между .Select (n => n.Name) и .Select (n => new {n.Name});

Я совершенно не знаком с Linq, и мне интересно, можете ли вы помочь мне понять разницу между следующим Linq? Например ...

//normal select
var contacts = entity.Contacts.Select(n => n.FirstName);

//select new
var contacts2 = entity.Contacts.Select(n => new { n.FirstName });

//normal select output
foreach (var c in contacts)
    Response.Write(c + "<br/>");

//select new output
foreach (var c in contacts2)
    Response.Write(c.FirstName + "<br/>");

Единственное различие, которое я вижу, заключается в том, что при обычном выборе имя (строка) сохраняется в коллекции, тогда как при выборе нового контактный объект сохраняется в collecton и первое имя, к которому обращается его свойство. Также select new возвращает свойства, только выбранные в операторе.

Еще одно различие, которое я заметил, заключается в том, что вы можете возвращать несколько определенных свойств в select new.

В каком сценарии будет вы предпочитаете одно другому?

Спасибо за помощь.

5
задан user971543 1 October 2011 в 14:52
поделиться