C#:如何将对象列表转换为该对象的单个属性列表?

Posted

技术标签:

【中文标题】C#:如何将对象列表转换为该对象的单个属性列表?【英文标题】:C#: How to convert a list of objects to a list of a single property of that object? 【发布时间】:2009-09-22 16:14:43 【问题描述】:

说我有:

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

person 对象具有 FirstName、LastName 和 Gender 等属性。

如何将其转换为 Person 对象的属性列表。例如,一个名字列表。

IList<string> firstNames = ???

【问题讨论】:

【参考方案1】:
List<string> firstNames = people.Select(person => person.FirstName).ToList();

还有排序

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

【讨论】:

谢谢。另外,我将如何按名字的字母顺序对其进行排序? 列表 firstNames = people.Select(person => person.FirstName).ToList().Sort();这将使用字符串的默认字母排序进行排序。 Sort() 不支持流畅的界面!分别调用 firstNames.Sort() var list = from person in people orderby person.FirstName select person.FirstName;【参考方案2】:
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();

【讨论】:

在这种情况下使用查询表达式是矫枉过正的,IMO。如果您只是进行了一次简单的操作,点符号就不会那么乱了。 没错,但问题是“如何做到这一点”......而不是“如何用最少的绒毛做到这一点”。没有不尊重的意思,乔恩。 (请不要打我)。【参考方案4】:
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; 
    

【讨论】:

【参考方案5】:
using System.Collections.Generic;
using System.Linq;

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

【讨论】:

感谢您提供此代码 sn-p,它可能会提供一些有限的短期帮助。一个正确的解释would greatly improve 它的长期价值,通过展示为什么这是一个很好的解决问题的方法,并且会使其对未来有其他类似问题的读者更有用。请编辑您的答案以添加一些解释,包括您所做的假设【参考方案6】:

这会将它变成一个列表:

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

这将返回一个(第一个):

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

【讨论】:

问题已经回答,请勿抄袭。

以上是关于C#:如何将对象列表转换为该对象的单个属性列表?的主要内容,如果未能解决你的问题,请参考以下文章

C#对象列表,我如何获得一个属性的总和

c# 组合框绑定到对象列表

如何将 json 对象列表转换为单个 pyspark 数据框?

将列表转换为DataFrame时如何处理错误“'NoneType'对象没有属性'keys'”

C#如何将变量用作键值字符串数组的对象列表对象构造函数中的属性名称

在c#中将对象列表转换为数组-“x => x.Name”语法是啥意思? [复制]