我對C#比較陌生。在C#中獲取2個列表中的最大年齡的名稱
我想從名單和年齡列表中找到最大年齡的名稱。 不像下面的例子,我不知道提前給出了哪個名字或哪個年齡段。
姓名和年齡從下面的兩個列表創建。
List<string> name = new List<string>();
List<double> age = new List<double>();
我知道如何用Max()方法找到最大年齡,但是如何獲得相應的名稱? 下面的例子有一種方法可以從列表中創建新的對象嗎?
/// This class implements IComparable to be able to
/// compare one Pet to another Pet.
/// </summary>
class Pet : IComparable<Pet>
{
public string Name { get; set; }
public int Age { get; set; }
/// <summary>
/// Compares this Pet to another Pet by
/// summing each Pet's age and name length.
/// </summary>
/// <param name="other">The Pet to compare this Pet to.</param>
/// <returns>-1 if this Pet is 'less' than the other Pet,
/// 0 if they are equal,
/// or 1 if this Pet is 'greater' than the other Pet.</returns>
int IComparable<Pet>.CompareTo(Pet other)
{
int sumOther = other.Age + other.Name.Length;
int sumThis = this.Age + this.Name.Length;
if (sumOther > sumThis)
return -1;
else if (sumOther == sumThis)
return 0;
else
return 1;
}
}
public static void MaxEx3()
{
Pet[] pets = { new Pet { Name="Barley", Age=8 },
new Pet { Name="Boots", Age=4 },
new Pet { Name="Whiskers", Age=1 } };
Pet max = pets.Max();
Console.WriteLine(
"The 'maximum' animal is {0}.",
max.Name);
}
/*
This code produces the following output:
The 'maximum' animal is Barley.
*/
我不認爲馬克斯在您的示例中使用()將自動確定哪個子成員具有最高的「年齡」屬性。此外,您的Compare實現似乎將Pet.Name字符串的長度添加到比較之前的年齡(例如,Pet {Name ='Bob',Age = 4}等於Pet {Name ='NotBob',Age =' 1'}。也許可以修復這個方法來分別評估屬性嗎? – Nicodemeus
代碼只是我認爲很接近的一個例子。List name = new List(); List age = new List();是我的名字和年齡是的,我需要從最大年齡的名字中得到兩個名單...對不起,我感到困惑 –