C #: Bagaimana cara mengubah daftar objek menjadi daftar properti tunggal objek itu?


104

Katakanlah saya punya:

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

Dan objek person memiliki properti seperti FirstName, LastName, dan Gender.

Bagaimana saya bisa mengubahnya menjadi daftar properti dari objek Person. Misalnya, ke daftar nama depan.

IList<string> firstNames = ???

Jawaban:


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

Dan dengan penyortiran

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

Terima kasih. Juga, bagaimana saya mengurutkan menurut abjad berdasarkan nama depan?
Pengguna

Daftar <string> firstNames = orang.Select (person => person.FirstName) .ToList (). Sort (); Ini akan mengurutkan menggunakan pengurutan alfabet default dari string.
Paul Williams

Sort () tidak mendukung antarmuka yang lancar! Panggil firstNames.Sort () secara terpisah
Dario

var list = dari orang dalam orang atau orang.FirstName pilih orang.FirstName;
ConsultUtah

salah satu jawaban terbaik di SO! (bisa menjadi ketidaktahuan saya) :)
nawfal

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

Atau

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

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

7
Menggunakan ekspresi kueri dalam kasus ini berlebihan, IMO. Notasi titik memiliki lebih sedikit bulu jika Anda baru saja mendapatkan satu operasi sederhana.
Jon Skeet

1
Benar, tapi pertanyaannya adalah "Bagaimana ini bisa dilakukan" ... bukan "Bagaimana ini bisa dilakukan dengan sedikit bulu". Tidak ada maksud tidak hormat, Jon. (Tolong jangan pukul saya).
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();

Terima kasih atas cuplikan kode ini, yang mungkin memberikan beberapa bantuan jangka pendek terbatas. Penjelasan yang tepat akan sangat meningkatkan nilai jangka panjangnya dengan menunjukkan mengapa ini adalah solusi yang baik untuk masalah tersebut dan akan membuatnya lebih berguna bagi pembaca di masa mendatang dengan pertanyaan serupa lainnya. Harap edit jawaban Anda untuk menambahkan beberapa penjelasan, termasuk asumsi yang Anda buat
Shawn C.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.