【问题标题】:Comparing values of objects within the same list [duplicate]比较同一列表中对象的值[重复]
【发布时间】:2021-02-02 05:45:49
【问题描述】:

我已经搜索过这个主题,但它总是显示需要比较的两个列表的结果。

如何比较同一列表中的 2 个或多个对象的特定属性?

例如在下面的示例代码中,我如何仅比较年龄值来找出整个列表中的哪个人是最年轻的?谢谢!

public class Person
{
    private string name;
    private short age;


     public Person(string name, short age)
     {
         this.name = name;
         this.age = age;
     }

     public string Name
     {
         get { return name;  }
         set { name = value; }
     }

     public short Age
     {
         get { return age; }
         set { age = value; }
     }

}

List<Person> PersonList = new List<Person>();

PersonList.Add(new Person("John Smith", 35));
PersonList.Add(new Person("Jane Doe", 18));
PersonList.Add(new Person("Bill Lee", 28));

【问题讨论】:

  • 你试过linq表达式吗?
  • var youngest = PersonList.OrderBy(x =&gt; x.Age).FirstOrDefault()

标签: c# list object compare


【解决方案1】:

根据Age属性排序并返回第一个元素:

Person the_youngest = PersonList.OrderBy(i => i.Age).ToList<Person>().First();

也使用 Linq 进行就地排序:

PersonList = PersonList.OrderBy(x => x.Age).ToList<Person>();

【讨论】:

  • 对于少量项目,这是可以接受的简单,但对于较大的项目,此排序整个列表,而不是简单地扫描可能占用更多 CPU 和 RAM 的最大成员。
猜你喜欢
  • 1970-01-01
  • 2014-03-23
  • 1970-01-01
  • 1970-01-01
  • 2022-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多