选择年龄最接近数字的最高年龄

gul*_*aek 4 .net c# linq

想想我一直在看我的代码太多了.

但我的问题是我有一个无序列表,我需要选择具有最高数字的对象接近或等于输入.

我创建了这个小样本来说明我想要做的事情.

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

var persons = new List<Person>
{
    new Person {Age = 10, Name = "Aaron"},
    new Person {Age = 15, Name = "Alice"},
    new Person {Age = 20, Name = "John"},
    new Person {Age = 22, Name = "Bob"},
    new Person {Age = 24, Name = "Malcom"}
};

int i = 17; //should return 'Alice 15'    
int y = 22; //should return 'Bob 22
Run Code Online (Sandbox Code Playgroud)

Dan*_*ite 9

var person = persons.Where(p => p.Age <= input).OrderByDecending(p => p.Age).First();
Run Code Online (Sandbox Code Playgroud)

这首先排除了大于input(你i或者y)的那些.然后开始对它们进行排序,然后它只取第一个结果.

  • 我相信`FirstOrDefault()`不容易出错 (3认同)