C #: Wie konvertiere ich eine Liste von Objekten in eine Liste einer einzelnen Eigenschaft dieses Objekts?


103

Sagen wir, ich habe:

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

Das Personenobjekt verfügt über Eigenschaften wie Vorname, Nachname und Geschlecht.

Wie kann ich dies in eine Liste von Eigenschaften des Person-Objekts konvertieren? Zum Beispiel zu einer Liste von Vornamen.

IList<string> firstNames = ???

Antworten:


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

Und mit Sortieren

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

Vielen Dank. Wie würde ich das alphabetisch nach Vornamen sortieren?
Benutzer

List <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Dies wird mit der alphabetischen Standardsortierung der Zeichenfolge sortiert.
Paul Williams

Sort () unterstützt keine fließende Oberfläche! Rufen Sie firstNames.Sort () separat auf
Dario

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

eine der besten Antworten auf SO! (könnte meine Unwissenheit sein) :)
Nawfal

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

Oder

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

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

7
Die Verwendung eines Abfrageausdrucks ist in diesem Fall übertrieben, IMO. Die Punktnotation hat weniger Flusen, wenn Sie nur eine einfache Operation haben.
Jon Skeet

1
Stimmt, aber die Frage war "Wie kann das gemacht werden" ... nicht "Wie geht das mit der geringsten Menge an Flusen". Keine Respektlosigkeit beabsichtigt, Jon. (Bitte schlag mich nicht).
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();

Vielen Dank für dieses Code-Snippet, das möglicherweise nur begrenzte kurzfristige Hilfe bietet. Eine richtige Erklärung würde ihren langfristigen Wert erheblich verbessern, indem sie zeigt, warum dies eine gute Lösung für das Problem ist, und es für zukünftige Leser mit anderen, ähnlichen Fragen nützlicher machen. Bitte bearbeiten Sie Ihre Antwort, um einige Erklärungen hinzuzufügen, einschließlich der Annahmen, die Sie gemacht haben
Shawn C.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.