从IEnumerable获取头部和尾部,只能迭代一次的问题,可以通过以下方式解决:
FirstOrDefault()
方法获取第一个元素。Skip(1)
方法跳过第一个元素,然后使用ToList()
方法将剩余元素转换为列表。示例代码:
var enumerable = GetEnumerable(); // 获取IEnumerable对象
var head = enumerable.FirstOrDefault();
var tail = enumerable.Skip(1).ToList();
GetHead()
,在方法内部使用foreach
循环迭代一次,返回第一个元素。GetTail()
,在方法内部使用Skip(1)
方法跳过第一个元素,然后返回剩余元素的IEnumerable
。示例代码:
public static class EnumerableExtensions
{
public static T GetHead<T>(this IEnumerable<T> enumerable)
{
foreach (var item in enumerable)
{
return item;
}
throw new InvalidOperationException("Sequence contains no elements.");
}
public static IEnumerable<T> GetTail<T>(this IEnumerable<T> enumerable)
{
return enumerable.Skip(1);
}
}
var enumerable = GetEnumerable(); // 获取IEnumerable对象
var head = enumerable.GetHead();
var tail = enumerable.GetTail().ToList();
这样,通过以上两种方式,你可以从IEnumerable获取头部和尾部,只需要迭代一次。
领取专属 10元无门槛券
手把手带您无忧上云