我有List
个n项。我希望将我的列表转换为新列表,其中不超过n个第一项。
n=3
的示例:
[1, 2, 3, 4, 5] => [1, 2, 3]
[1, 2] => [1, 2]
最简单的方法是什么?
答案 0 :(得分:13)
如果你有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);
答案 1 :(得分:7)
如果您没有LINQ,请尝试:
public List<int> GetFirstNElements(List<int> list, int n)
{
n = Math.Min(n, list.Count);
return list.GetRange(0, n);
}
否则使用Take。
答案 2 :(得分:6)
您可以使用Take
myList.Take(3);
答案 3 :(得分:1)
你可以使用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>();
答案 4 :(得分:1)
var newList = List.Take(3);