从C#上的List获取前几个元素

时间:2010-03-09 17:02:08

标签: c# list

我有List个n项。我希望将我的列表转换为新列表,其中不超过n个第一项。

n=3的示例:

[1, 2, 3, 4, 5] => [1, 2, 3]
[1, 2] => [1, 2]

最简单的方法是什么?

5 个答案:

答案 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);