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();
【讨论】:
谢谢。另外,我将如何按名字的字母顺序对其进行排序? 列表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#:如何将对象列表转换为该对象的单个属性列表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 json 对象列表转换为单个 pyspark 数据框?
将列表转换为DataFrame时如何处理错误“'NoneType'对象没有属性'keys'”