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 = ???
Benutzer
quelle

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();
Dario
quelle
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();
Jon Sagara
quelle
3
firstNames = (from p in people select p=>p.firstName).ToList();
Gregoire
quelle
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; }
    }
}
Mohd Shahnawaz
quelle
0
using System.Collections.Generic;
using System.Linq;

IList<Person> people = new List<Person>();
IList<string> firstNames = people.Select(person => person.FirstName).ToList();
M Fatih Koca
quelle
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.