Question Créer une liste avec un seul membre de classe


J'ai une liste de cette classe:

public class Data
{
   public string name {get; set;}
   public int width {get; set;}
}

Et je veux créer une méthode qui renvoie une liste de la propriété name uniquement. Comme ça:

public List<string> GetAllNames()
{ return MyDataList<name>.ToList(); }

Donc, si j'ai cette liste:

  1. name = Jon - width = 10
  2. name = Jack - width = 25

Je veux la liste suivante:

  1. name = Jon
  2. name = Jack

C'est possible?


11
2018-06-22 13:43


origine


Réponses:


Utilisez LINQ:

public List<string> GetAllNames()
{
    return MyDataList.Select(i => i.name).ToList();
}

21
2018-06-22 13:45



Si vous utilisez .NET 3.5 (VS2008) ou une version ultérieure, utilisez les méthodes d’extension suivantes:

public class Data { String Name; Int32 Width; }
public List<Data> MyData = new List<Data>();

public static IEnumerable<String> GetNames(this List<Data> data) {
    foreach(Data d in data) yield return d.Name;
}
// or use Linq to return a concrete List<String> implementation rather than IEnumerable.

2
2018-06-22 13:46



public List<string> GetAllNames()
{ 
    return myDataList.Select(item => item.name).ToList();
}

2
2018-06-22 13:46