非常簡單的問題。我有一個值列表,我想填充空值,這樣我總是有X個項目返回。Enumerable.Repeat Union和Take不返回'Take'值
List<int> list = new List<int>() { 10, 20, 30 };
IEnumerable<int> values = list
.OrderByDescending(i => i)
.Union(Enumerable.Repeat(0 , 5));
foreach (var item in values.Take(5))
Console.Write(item + " ");
我期待輸出像「30 20 10 0 0」但令人驚訝的是我只得到「30 20 10 0」。
foreach (var i in Enumerable.Repeat(0, 5).Take(3))
Console.Write(i + " ");
此代碼將返回「0 0 0」。同樣「list.Take(3)
」返回「30 20 10」。
感謝。我正在考慮一個SQL聯盟。 –
@IanQuigley SQL'union'有一個隱含的不同* too *。爲了避免它,你需要使用'UNION ALL'(這是:concat) –