我有List
有n個項目。我希望將我的列表轉換爲新列表,其中不超過n個第一項。從C#列表中獲取前幾個元素#
n=3
例子:
[1, 2, 3, 4, 5] => [1, 2, 3]
[1, 2] => [1, 2]
什麼是做到這一點的最簡單的辦法?
我有List
有n個項目。我希望將我的列表轉換爲新列表,其中不超過n個第一項。從C#列表中獲取前幾個元素#
n=3
例子:
[1, 2, 3, 4, 5] => [1, 2, 3]
[1, 2] => [1, 2]
什麼是做到這一點的最簡單的辦法?
如果你有C#3,使用Take
擴展方法:
var list = new [] {1, 2, 3, 4, 5};
var shortened = list.Take(3);
參見:http://msdn.microsoft.com/en-us/library/bb503062.aspx
如果你有C#2,你可以寫等價的:
static IEnumerable<T> Take<T>(IEnumerable<T> source, int limit)
{
foreach (T item in source)
{
if (limit-- <= 0)
yield break;
yield return item;
}
}
的唯一不同的是它不是擴展方法:
var shortened = SomeClass.Take(list, 3);
您可以使用以
myList.Take(3);
你可以使用LINQ
List<int> myList = new List<int>();
myList.Add(1);
myList.Add(2);
myList.Add(3);
myList.Add(4);
myList.Add(5);
myList.Add(6);
List<int> subList = myList.Take<int>(3).ToList<int>();
如果你沒有LINQ,嘗試:
public List<int> GetFirstNElements(List<int> list, int n)
{
n = Math.Min(n, list.Count);
return list.GetRange(0, n);
}
以其它方式使用取。
var newList = List.Take(3);
長度檢查不是必需的。 – 2010-03-09 17:08:18
在我看來,很多泛型可以推斷出來。 – 2010-03-09 17:08:36
這可以通過@Dave的評論簡化爲myList.Take(3).ToList()。 – jrummell 2010-03-09 17:15:41