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

And*_*hin 3 c# list

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

示例n=3:

[1, 2, 3, 4, 5] => [1, 2, 3]
[1, 2] => [1, 2]
Run Code Online (Sandbox Code Playgroud)

最简单的方法是什么?

Dan*_*ker 13

如果您有C#3,请使用Take扩展方法:

var list = new [] {1, 2, 3, 4, 5};

var shortened = list.Take(3);
Run Code Online (Sandbox Code Playgroud)

请参阅: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;
    }
}
Run Code Online (Sandbox Code Playgroud)

唯一的区别是它不是扩展方法:

var shortened = SomeClass.Take(list, 3);
Run Code Online (Sandbox Code Playgroud)


Sim*_*mon 7

如果您没有LINQ,请尝试:

public List<int> GetFirstNElements(List<int> list, int n)
{
    n = Math.Min(n, list.Count);
    return list.GetRange(0, n);
}
Run Code Online (Sandbox Code Playgroud)

否则使用Take.


Caf*_*eek 6

你可以使用Take

myList.Take(3);
Run Code Online (Sandbox Code Playgroud)