我有一些物件。并且在每個物件中都有一個屬性年齡。我想對所有物件的屬性年齡進行排序。在這種情況下,我有兩個物件。但例如,如果您有三個、四個……等物件。也許有一個更通用的方法?
所以這是代碼:
List<Person> personList = new List<Person>
{
new Person { Age = 77 },
new Person { Age = 88 },
new Person { Age = 1001 },
new Person { Age = 755 }
};
List<Dog> dogList = new List<Dog>
{
new Dog { Age = 1 },
new Dog { Age = 9 },
new Dog { Age = 10 },
new Dog { Age = 8 }
};
personList.Sort((x, y) => x.Age.CompareTo(y.Age));
dogList.Sort((x, y) => x.Age.CompareTo(y.Age));
所以在這種情況下輸出必須是:
1 8 9 10 77 88 755 1001
uj5u.com熱心網友回復:
除了 Christian 使用 改變/擴展現有串列的方法之外,Concat還可以Union在排序之前不具體化投影并使用生成新的組合序列來執行此操作,如下所示:
var sortedAges = personList
.Select(p => p.Age)
.Union(dogList.Select(d => d.Age))
.OrderBy(age => age);
foreach (var age in sortedAges) // << The result is only 'materialized' here, once.
{ ...
uj5u.com熱心網友回復:
您可以創建兩個年齡串列,它們將創建一個IEnumerable<int>,Combine和Order它們...
var personAsAge = personList.Select(p => p.Age);
var dogAsAge = Dogist.Select(d => d.Age);
var ageOrder = personAsAge.Concat(dogAsAge).OrderBy(a => a);
您也需要匯入System.Linq;。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/314593.html
