2009-09-22 49 views
52

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

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

Và các đối tượng người có các đặc tính như FirstName, LastName, và giới tính.

Làm cách nào tôi có thể chuyển đổi điều này thành danh sách thuộc tính của đối tượng Person. Ví dụ, để một danh sách các tên đầu tiên.

IList<string> firstNames = ??? 

Trả lời

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

Và với sắp xếp

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

Cảm ơn. Ngoài ra, làm thế nào tôi sắp xếp thứ tự bảng chữ cái theo tên? – User

+0

Danh sách firstNames = people.Select (person => person.FirstName) .ToList(). Sort(); Điều này sẽ sắp xếp bằng cách sử dụng phân loại chuỗi ký tự mặc định. –

+0

Sắp xếp() không hỗ trợ giao diện thông thạo! Gọi firstNames.Sort() một cách riêng biệt – Dario

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 có ít lông tơ hơn nếu bạn chỉ có một thao tác đơn giản. –

+1

Đúng, nhưng câu hỏi là "Làm thế nào điều này có thể được thực hiện" ... không "Làm thế nào điều này có thể được thực hiện với số tiền ít nhất của lông tơ". Không hề thiếu tôn trọng, Jon. (Làm ơn đừng chọc tôi). –

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

Hoặc

IList<string> firstNames = people.Select(person => person.FirstName).ToList(); 
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(); 
+0

Cảm ơn bạn cho đoạn mã này, có thể cung cấp một số trợ giúp ngắn hạn hạn chế. Một lời giải thích thích hợp [sẽ cải thiện rất nhiều] (https://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) giá trị lâu dài của nó bằng cách hiển thị lý do tại sao đây là một giải pháp tốt cho vấn đề và sẽ làm cho nó hữu ích hơn cho độc giả tương lai với các câu hỏi tương tự khác. Vui lòng 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 –

Các vấn đề liên quan