4

コードを見すぎていると思います。

しかし、私の問題は、順序付けられていないリストがあり、最大数が入力に近いか等しいオブジェクトを選択する必要があることです。

私がやろうとしていることを説明するために、この小さなサンプルを作成しました。

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
4

5 に答える 5

9
var person = persons.Where(p => p.Age <= input).OrderByDecending(p => p.Age).First();

inputこれは最初に(あなたのiまたは)よりも大きいものを除外しますy。次に、それらの並べ替えを開始し、最初の結果のみを取得します。

于 2012-04-11T13:07:15.883 に答える
0

これは私が持っている例です、それはあなたを助けるはずです

     List<int> list = new List<int> { 10, 15, 20, 22, 24 };
        int number = 17;
        int closest = list.Aggregate((x, y) => Math.Abs(x - number) < Math.Abs(y - number) ? x : y);
        Label2.Text = closest.ToString();
于 2012-04-11T13:15:43.007 に答える