C #: Bir nesne listesi, o nesnenin tek bir özelliğinin bir listesine nasıl dönüştürülür?


108

Sahip olduğumu söyle:

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

Ve kişi nesnesinin FirstName, LastName ve Gender gibi özellikleri vardır.

Bunu Person nesnesinin özellikler listesine nasıl dönüştürebilirim. Örneğin, ilk isimler listesine.

IList<string> firstNames = ???

Yanıtlar:


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

Ve sıralama ile

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

Teşekkürler. Ayrıca, bunu alfabetik olarak ada göre nasıl sıralayabilirim?
Kullanıcı

Liste <string> firstNames = people.Select (person => person.FirstName) .ToList (). Sort (); Bu, dizenin varsayılan alfabetik sıralamasını kullanarak sıralayacaktır.
Paul Williams

Sort () akıcı bir arayüzü desteklemiyor! FirstNames.Sort () öğesini ayrı olarak arayın
Dario

var list = kişi sırasına göre kişiden.İlkAdı kişi.İlkAdı seç;
ConsultUtah

SO'daki en iyi cevaplardan biri! (benim cehaletim olabilir) :)
nawfal

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

Veya

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

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

7
Bu durumda bir sorgu ifadesi kullanmak aşırıdır, IMO. Tek bir basit işleminiz varsa, nokta notasyonunda daha az tüy vardır.
Jon Skeet

1
Doğru, ama soru "Bu nasıl yapılabilir" idi ... "Bu en az miktarda tüy ile nasıl yapılabilir" değil. Saygısızlık niyetinde değil, Jon. (Lütfen beni vurma).
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();

Kısa vadeli sınırlı yardım sağlayabilecek bu kod parçacığı için teşekkür ederiz. Uygun bir açıklama , bunun neden soruna iyi bir çözüm olduğunu göstererek uzun vadeli değerini büyük ölçüde artıracak ve diğer benzer sorularla gelecekteki okuyucular için daha yararlı hale getirecektir. Lütfen yanıtınızı düzenleyerek yaptığınız varsayımlar da dahil olmak üzere bazı açıklamalar ekleyin
Shawn C.

-2

Bu onu bir listeye dönüştürecektir:

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

Bu, birini (ilki) döndürecektir:

var firstname = people.select(e => e.firstname).FirstOrDefault();

Soru zaten cevaplandı, başka birinin cevaplarını kopyalamayın.
CrudaLilium
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.