Nous utilisons souvent l'expression lambda suivante
MyList.Select(x => x.Id).ToList();
Est-il possible d'obtenir plus d'une propriété en utilisant l'expression lambda? E.g Id
et Name
de MyList?
Je sais que je peux utiliser la syntaxe suivante:
(from item in MyList
select new { item.Id, item.Name }).ToList();
Puis-je faire la même chose en utilisant l'expression lambda?
MyList.Select(x => new { x.Id, x.Name }).ToList();
La fonctionnalité qui vous intéresse est celle du C # 3/ Types anonymes
Vous pouvez créer une nouvelle instance de type anonyme avec:
var v = new { Amount = 108, Message = "Hello", this.Text };
Bien sûr, cela fonctionne aussi comme une lamda:
SomeThing.Select( () => new {X=1,Y=2} )
n'importe où dans votre code. Il récupère également les noms de propriété, auquel cas vous n'avez pas besoin de le spécifier explicitement (le troisième membre du type anonyme de mon exemple s'appelle automatiquement Text
.
Malheureusement, vous ne pouvez pas les utiliser comme type de retour non générique d'une fonction.
var sample = dbcontext.MyList
.Select(m => new Mylist{ sampleid=m.sampleid,item=m.item })
.ToList();