C #: Làm thế nào để chuyển đổi một danh sách các đối tượng thành một danh sách một thuộc tính duy nhất của đối tượng đó?


104

Giả sử tôi có:

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

Và đối tượng person có các thuộc tính như FirstName, LastName và Gender.

Làm cách nào để chuyển đổi nó thành một danh sách các thuộc tính của đối tượng Person. Ví dụ: đến một danh sách tên.

IList<string> firstNames = ???

Câu trả lời:


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

Và với phân loại

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

Cảm ơn. Ngoài ra, làm cách nào để sắp xếp thứ tự bảng chữ cái theo tên đầu tiên?
Người dùng

List <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Điều này sẽ sắp xếp bằng cách sử dụng sắp xếp theo bảng chữ cái mặc định của chuỗi.
Paul Williams

Sort () không hỗ trợ giao diện thông thạo! Gọi trướcNames.Sort () riêng
Dario

var list = from person in people orderby person.FirstName chọn người.FirstName;
ConsultUtah 22/09/09

một trong những câu trả lời hay nhất trên SO! (có thể là sự thiếu hiểu biết của tôi) :)
nawfal

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

Hoặc là

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

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

7
Sử dụng biểu thức truy vấn trong trường hợp này là quá mức cần thiết, IMO. Ký hiệu dấu chấm sẽ ít lông tơ hơn nếu bạn chỉ có một thao tác đơn giản.
Jon Skeet 22/09/09

1
Đúng, nhưng câu hỏi đặt ra là "Làm thế nào có thể làm được" ... chứ không phải "Làm thế nào có thể thực hiện được với ít lông tơ nhất". Không có ý định thiếu tôn trọng, Jon. (Xin đừng đánh tôi).
Dan Esparza 22/09/09

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

Cảm ơn bạn về đoạn mã này, đoạn mã có thể cung cấp một số trợ giúp ngắn hạn có giới hạn. Một lời giải thích phù hợp sẽ cải thiện đáng kể giá trị lâu dài của nó bằng cách chỉ ra lý do tại sao đây là một giải pháp tốt cho vấn đề và sẽ hữu ích hơn cho những người đọc trong tương lai với những câu hỏi tương tự khác. Hãy chỉnh sửa câu trả lời của bạn để thêm một số giải thích, bao gồm các giả định bạn đã thực hiện
Shawn C.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.