C # : 개체 목록을 해당 개체의 단일 속성 목록으로 변환하는 방법은 무엇입니까?


104

내가 가지고 있다고 :

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

그리고 person 개체에는 FirstName, LastName 및 Gender와 같은 속성이 있습니다.

이것을 Person 객체의 속성 목록으로 어떻게 변환 할 수 있습니까? 예를 들어, 이름 목록에.

IList<string> firstNames = ???

답변:


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

그리고 정렬

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

감사. 또한 이름을 기준으로 알파벳순으로 정렬하는 방법은 무엇입니까?
사용자

List <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); 이것은 문자열의 기본 알파벳 정렬을 사용하여 정렬됩니다.
Paul Williams

Sort ()는 유창한 인터페이스를 지원하지 않습니다! firstNames.Sort ()를 별도로 호출
Dario

var list = from person in people orderby person.FirstName select person.FirstName;
ConsultUtah

SO에 대한 최고의 답변 중 하나! (수 나의 무지) :
nawfal

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

또는

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

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

7
이 경우 쿼리 표현식을 사용하는 것은 IMO입니다. 간단한 작업이 하나만 있으면 점 표기법의 보풀이 적습니다.
Jon Skeet

1
사실입니다. 그러나 질문은 "어떻게 할 수 있는가"였습니다. 무례한 의도는 없습니다, Jon. (날 때리지 마십시오).
Dan Esparza 09.09.22

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.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.