阻止 IEnumerable 枚举所有元素
Stop IEnumerable from enumerating through all elements
如何阻止 IEnumberable
枚举相关变量中的所有元素。
我有一个函数,我将 IEnumerable
列表传递给它,它总是只有两个元素。但是,我只需要 运行 第一个元素的函数,不多也不少。我如何让它只通过第一个元素?
注意:由于只有两个元素,我尝试将它们分别传入(例如 double
double
),但它仍然 运行 都通过了。
您可以使用 Take
方法来做这样的事情:
profile = profile.Take(1);
现在,当您枚举 profile
时,您只会经过一项。
显示以下代码:
Returning 0
这证实实际上只有一项已被评估。
public static void Main()
{
var numbers = GetNumbers(2);
var result = numbers.Take(1);
// Evaluate only first number
result.ToArray();
}
public static IEnumerable<int> GetNumbers(int max)
{
for(int i = 0; i < max; i++)
{
Console.WriteLine("Returning {0}", i);
yield return i;
}
}
如何阻止 IEnumberable
枚举相关变量中的所有元素。
我有一个函数,我将 IEnumerable
列表传递给它,它总是只有两个元素。但是,我只需要 运行 第一个元素的函数,不多也不少。我如何让它只通过第一个元素?
注意:由于只有两个元素,我尝试将它们分别传入(例如 double
double
),但它仍然 运行 都通过了。
您可以使用 Take
方法来做这样的事情:
profile = profile.Take(1);
现在,当您枚举 profile
时,您只会经过一项。
显示以下代码:
Returning 0
这证实实际上只有一项已被评估。
public static void Main()
{
var numbers = GetNumbers(2);
var result = numbers.Take(1);
// Evaluate only first number
result.ToArray();
}
public static IEnumerable<int> GetNumbers(int max)
{
for(int i = 0; i < max; i++)
{
Console.WriteLine("Returning {0}", i);
yield return i;
}
}