C #: come convertire un elenco di oggetti in un elenco di una singola proprietà di quell'oggetto?


104

Di 'che ho:

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

E l'oggetto persona ha proprietà come FirstName, LastName e Gender.

Come posso convertirlo in un elenco di proprietà dell'oggetto Person. Ad esempio, a un elenco di nomi.

IList<string> firstNames = ???

Risposte:


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

E con l'ordinamento

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

Grazie. Inoltre, come lo ordino alfabeticamente in base al nome?
— Utente

List <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Questo ordinerà utilizzando l'ordinamento alfabetico predefinito della stringa.
— Paul Williams,

Sort () non supporta un'interfaccia fluente! Chiama separatamente firstNames.Sort ()
— Dario

var list = from person in people orderby person.FirstName seleziona person.FirstName;
— ConsultUtah il

una delle migliori risposte su SO! (potrebbe essere la mia ignoranza) :)
— nawfal

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

O

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

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

7
L'utilizzo di un'espressione di query in questo caso è eccessivo, IMO. La notazione del punto ha meno confusione se hai solo una semplice operazione.
— Jon Skeet,

1
Vero, ma la domanda era "Come si può fare" ... non "Come si può fare con la minima quantità di lanugine". Nessuna mancanza di rispetto, Jon. (Per favore, non colpirmi).
— Dan Esparza,

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();

Grazie per questo snippet di codice, che potrebbe fornire un aiuto limitato a breve termine. Una spiegazione adeguata migliorerebbe notevolmente il suo valore a lungo termine mostrando perché questa è una buona soluzione al problema e la renderebbe più utile ai futuri lettori con altre domande simili. Modifica la tua risposta per aggiungere qualche spiegazione, comprese le ipotesi che hai fatto
— Shawn C.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.