LINQ Как выбрать более 1 свойства в выражении лямбда?

Мы часто используем следующее лямбда-выражение

MyList.Select(x => x.Id).ToList();

Можно ли получить более одного свойства, используя выражение lambda? Например, Id и Name из MyList?

Я знаю, что могу использовать следующий синтаксис:

(from item in MyList
 select new { item.Id, item.Name }).ToList();

Могу ли я сделать то же самое, используя выражение лямбда?

Ответы

Ответ 1

MyList.Select(x => new { x.Id, x.Name }).ToList();

Ответ 2

Эта функция вам интересна: С# 3 Анонимные типы

Вы можете создать новый экземпляр анонимного типа с помощью

var v = new { Amount = 108, Message = "Hello", this.Text };

Конечно, это тоже работает как лам:

SomeThing.Select( () => new {X=1,Y=2} )

в любом месте вашего кода. Он также выбирает имена свойств, и в этом случае вам не нужно явно указывать его (третий член анонимного типа в моем примере автоматически называется Text.

К сожалению, вы не можете использовать их как не общий тип возвращаемой функции.

Ответ 3

var sample = dbcontext.MyList
                      .Select(m => new Mylist{ sampleid=m.sampleid,item=m.item })
                      .ToList();