LINQ Как выбрать более 1 свойства в лямбда-выражении? - PullRequest
14 голосов
/ 03 декабря 2010

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

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

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

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

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

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

Ответы [ 3 ]

39 голосов
/ 03 декабря 2010
MyList.Select(x => new { x.Id, x.Name }).ToList();
3 голосов
/ 03 декабря 2010

Интересующая вас функция - это C # 3 Анонимные типы

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

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

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

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

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

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

1 голос
/ 05 декабря 2013
var sample = dbcontext.MyList
                      .Select(m => new Mylist{ sampleid=m.sampleid,item=m.item })
                      .ToList();
...