C #: Як перетворити список об'єктів у список одного властивості цього об’єкта?


104

Скажіть, у мене є:

IList<Person> people = new List<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();

Дякую. Крім того, як би я сортував це за алфавітом за прізвищем?
Користувач

Список <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Це буде сортувати, використовуючи алфавітне сортування рядків за замовчуванням.
Пол Вільямс

Sort () не підтримує вільний інтерфейс! Телефонуйте firstNames.Sort () окремо
Даріо,

var list = від людини в людей orderby person.FirstName select person.FirstName;
ConsultUtah

одна з найкращих відповідей на ТАК! (може бути моє незнання) :)
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
Використання виразу запиту в цьому випадку є overkill, IMO. Позначення крапок мають менше пуху, якщо у вас тільки одна операція.
Джон Скіт

1
Щоправда, але питання було "Як це можна зробити" ... не "Як це можна зробити з найменшою кількістю пуху". Жодної неповаги, Джон. (Будь ласка, не кайте мене).
Дан Еспарза

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

Дякуємо за цей фрагмент коду, який може надати деяку короткочасну допомогу. Правильне пояснення значно покращило б його довгострокове значення, показавши, чому це хороше рішення проблеми, та зробило б кориснішим майбутнім читачам інші, подібні питання. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення, включаючи припущення, які ви зробили
Шон К.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.