web-dev-qa-db-fra.com

Retourne la liste des propriétés spécifiques d'un objet en utilisant linq

Étant donné une classe comme celle-ci:

public class Stock
{
    public Stock() {}
    public Guid StockID { get; set; }
    public string Description { get; set; }
}

Disons que j'ai maintenant un List<Stock>. Si je souhaite récupérer une liste de tous les StockID et la remplir dans un IEnumerable ou IList. Évidemment, je peux le faire.

List<Stock> stockItems = new List<Stock>();
List<Guid> ids = new List<Guid>();

foreach (Stock itm in stockItems) 
{
    ids.Add(itm.StockID);
}

Mais existe-t-il un moyen d'utiliser Linq pour obtenir le même résultat? Je pensais que Distinct() pourrait le faire mais je n'ai pas pu trouver comment obtenir le résultat souhaité.

44
Maxim Gershkovich
var list = stockItems.Select(item => item.StockID).ToList();
107
Amiram Korach

Vous pouvez également le faire comme ceci:

ids = stockItems.ConvertAll<Guid>(o => o.StockID);
2
Ivan G

Que diriez-vous quelque chose comme ça? Cela peut-il être simplifié?

List<TranCode> alltrans = new List<TranCode>();

foreach (var bh in obj1.obj2WithCollection.obj2Collection)
{
    alltrans.AddRange(bh.obj3WithCollection.Select(e => e.TransactionCode).ToList());
}
0
user2259416