在C#中初始化数组的语法,类似于python

时间:2014-06-05 14:21:31

标签: c# python functional-programming

Python提供了以下语法来功能初始化python List:

mylist = [item for item in iterable]

C#中是否有类似的语法来初始化C#List?

编辑:

我想我应该更具体一点。我试图模仿以下语法:

mylist = [operation(item) for item in iterable]

3 个答案:

答案 0 :(得分:4)

假设iterable是某种IEnumerable<T>,您可以使用List<T>(IEnumerable<T>) constructor overload初始化新列表:

mylist = new List(iterable); 

您也可以致电Linq Enumberable.ToList extension method

mylist = iterable.ToList();

具体来说,看起来你正在追求如何做同样的列表理解。您可以使用Linq's Enumerable.Select method和lambda。例如,要匹配您的修改:

mylist = iterable.Select(item => operation(item)).ToList();

作为奖励,如果您尝试执行以下操作(添加条件):

mylist = [operation(item) for item in iterable if item > 42]

您可以在链中添加对Enumerable.Where的调用:

mylist = iterable.Where(item => item > 42).Select(item => operation(item)).ToList();

答案 1 :(得分:0)

您可以在以下庄园中创建一个C#项目列表,例如整数:

List<int> myList = new List<int>{1, 2, 3, 4,};

因此您无需指定初始大小,而是从初始对象中推断出来。如果你有一个可枚举的,请参阅下面的代码

IEnumerable<int> existingEnumerable = ...
List<int> myList = new List<int>(existingEnumerable);

如果符合您的需求,请告诉我们。

答案 2 :(得分:0)

看起来你只是将一个可迭代的集合变成一个数组。

在C#中,集合类型有一个.ToArray()扩展方法。也许这就是你需要的。

这将是:

result=iterable.ToArray();

编辑后,您似乎要转换列表。

myList=iterable.Select(i=> Operation(i));