Python提供了以下语法来功能初始化python List:
mylist = [item for item in iterable]
C#中是否有类似的语法来初始化C#List?
编辑:
我想我应该更具体一点。我试图模仿以下语法:
mylist = [operation(item) for item in iterable]
答案 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));