<p><a href="http://msdn.microsoft.com/en-us/library/73fe8cwf.aspx" rel="noreferrer">^{<cd1>}</a>的行为就像列表理解一样,对现有列表中的每个项执行相同的操作,然后返回一个新集合。这是使用Linq的一种替代方法,特别是当您仍在使用.NET 2.0时。</p>
<p>在Python中,一个简单的列表理解示例:</p>
<pre><code>>>> foo = [1, 2, 3]
>>> bar = [x * 2 for x in foo]
>>> bar
[2, 4, 6]
</code></pre>
<p>对于C#3.0,可以传递一个lambda函数,指定需要什么类型的映射函数。</p>
<pre><code>public static void Main()
{
var foo = new List<int>{ 1, 2, 3};
var bar = foo.ConvertAll(x => x * 2); // list comprehension
foreach (var x in bar)
{
Console.WriteLine(x); // should print 2 4 6
}
}
</code></pre>
<p>对于C#2.0,可以使用带有<code>Converter</code>委托的匿名方法来执行等效的操作。</p>
<pre><code>public static void Main()
{
List<int> foo = new List<int>(new int[]{ 1, 2, 3});
List<int> bar = foo.ConvertAll(new Converter<int, int>(delegate(int x){ return x * 2; })); // list comprehension
foreach (int x in bar)
{
Console.WriteLine(x); // should print 2 4 6
}
}
</code></pre>
<p>(注意:使用<a href="http://msdn.microsoft.com/en-us/library/exc45z53.aspx" rel="noreferrer">^{<cd3>}</a>的数组也可以这样做)</p>