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

ありがとう。また、アルファベット順で名を並べ替える方法を教えてください。
ユーザー

List <string> firstNames = people.Select(person => person.FirstName).ToList()。Sort(); これは、文字列のデフォルトのアルファベット順の並べ替えを使用して並べ替えます。
ポールウィリアムズ、

Sort()は流暢なインターフェースをサポートしていません!firstNames.Sort()を個別に呼び出す
Dario

var list = person in person orderby person.FirstName select person.FirstName;
ConsultUtah 09/09/22

SOのベストアンサーの1つです。(私の無知かもしれません):)
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。簡単な操作が1つしかない場合、ドット表記は綿毛が少なくなります。
Jon Skeet

1
本当ですが、問題は「これをどのように行うことができるか」ということでした...「綿毛の量を最小限にしてこれをどのように行うことができるか」ではありません。失礼な意図はありません、ジョン。(私をたたかないでください)。
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; }
    }
}

0
using System.Collections.Generic;
using System.Linq;

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

このコードスニペットをありがとうございます。このコードスニペットは、限られた短期間のヘルプを提供する可能性があります。適切な説明は、なぜこれが問題の優れた解決策であるかを示すことにより、長期的な価値を大幅に改善し、他の同様の質問を持つ将来の読者にとってより有用になるでしょう。回答を編集して、いくつかの説明を加えてください
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.