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 = ???
Pengguna
sumber

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();
Dario
sumber
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();
Jon Sagara
sumber
3
firstNames = (from p in people select p=>p.firstName).ToList();
Gregoire
sumber
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; }
    }
}
Mohd Shahnawaz
sumber
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
sumber
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.