C #: Comment convertir une liste d'objets en une liste d'une seule propriété de cet objet?


105

Dis que j'ai:

IList<Person> people = new List<Person>();

Et l'objet personne a des propriétés telles que FirstName, LastName et Gender.

Comment puis-je convertir cela en une liste de propriétés de l'objet Person. Par exemple, à une liste de prénoms.

IList<string> firstNames = ???

Réponses:


180
List<string> firstNames = people.Select(person => person.FirstName).ToList();

Et avec le tri

List<string> orderedNames = people.Select(person => person.FirstName).OrderBy(name => name).ToList();

Merci. Aussi, comment pourrais-je trier cela par ordre alphabétique par prénom?
Utilisateur le

List <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Cela triera en utilisant le tri alphabétique par défaut de la chaîne.
Paul Williams

Sort () ne prend pas en charge une interface fluide! Appelez firstNames.Sort () séparément
Dario

var list = from person in people orderby person.FirstName select person.FirstName;
ConsultUtah le

l'une des meilleures réponses sur SO! (pourrait être mon ignorance) :)
nawfal

5
IList<string> firstNames = (from person in people select person.FirstName).ToList();

Ou

IList<string> firstNames = people.Select(person => person.FirstName).ToList();

3
firstNames = (from p in people select p=>p.firstName).ToList();

7
Utiliser une expression de requête dans ce cas est excessif, IMO. La notation par points a moins de peluches si vous n'avez qu'une opération simple.
Jon Skeet le

1
C'est vrai, mais la question était "Comment cela peut-il être fait" ... pas "Comment cela peut-il être fait avec le moins de peluches". Pas de manque de respect, Jon. (S'il vous plaît ne me frappez pas).
Dan Esparza le

1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace TestProject
{
    public partial class WebForm3 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SampleDataContext context = new SampleDataContext();
            List<Employee> l = new List<Employee>();
            var qry = from a in context.tbl_employees where a.Gender=="Female"  
                orderby  a.Salary ascending
            select new Employee() {
                           ID=a.Id,
                           Fname=a.FName,
                           Lname=a.Lname,
                           Gender=a.Gender,
                           Salary=a.Salary,
                           DepartmentId=a.DeparmentId
            };
            l= qry.ToList();
            var e1 =  from  emp in context.tbl_employees
                where emp.Gender == "Male"
                orderby emp.Salary descending
                select  emp;
            GridView1.DataSource = l;
            GridView1.DataBind();
        }
    }
    public class Employee
    {
        public Int64 ID { get; set; }
        public String Fname { get; set; }
        public String Lname { get; set; }
        public String Gender { get; set; }
        public decimal? Salary { get; set; }
        public int? DepartmentId { get; set; }
    }
}

0
using System.Collections.Generic;
using System.Linq;

IList<Person> people = new List<Person>();
IList<string> firstNames = people.Select(person => person.FirstName).ToList();

Merci pour cet extrait de code, qui pourrait fournir une aide limitée à court terme. Une explication appropriée améliorerait considérablement sa valeur à long terme en montrant pourquoi c'est une bonne solution au problème et la rendrait plus utile aux futurs lecteurs avec d'autres questions similaires. Veuillez modifier votre réponse pour ajouter des explications, y compris les hypothèses que vous avez faites
Shawn C.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.