C# 将对象集合转换为元组集合

C# 将对象集合转换为元组集合,c#,tuples,extension-methods,ienumerable,C#,Tuples,Extension Methods,Ienumerable,我有一组物品。我已经确定它有一个甚至数量的对象 Object1 Object2 Object3 Object4 Object5 Object6 我需要将集合转换为元组,如下所示 Tuple(Object1, Object2), Tuple(Object3, Object4), Tuple(Object5, Object6) 我一直在尝试为它想出一个扩展方法,但我什么也没想到 public static IEnumerable<Tuple<T, T>> ToTuples

我有一组物品。我已经确定它有一个甚至数量的对象

Object1
Object2
Object3
Object4
Object5
Object6
我需要将集合转换为元组,如下所示

Tuple(Object1, Object2),
Tuple(Object3, Object4),
Tuple(Object5, Object6)
我一直在尝试为它想出一个扩展方法,但我什么也没想到

public static IEnumerable<Tuple<T, T>> ToTuples(this IEnumerable<T> objects)
{
    // what do I do here?
}
公共静态IEnumerable ToTuples(此IEnumerable对象)
{
//我在这里干什么?
}

可能是这样的吧

  public static IEnumerable<Tuple<T, T>> ToTuples<T>(this IEnumerable<T> objects)
  {
     IEnumerator<T> enumerator = objects.GetEnumerator();
     while (enumerator.MoveNext())
     {
        T object1 = enumerator.Current;
        if (enumerator.MoveNext())
        {
           yield return Tuple.Create(object1, enumerator.Current);
        }
     }
  }
公共静态IEnumerable ToTuples(此IEnumerable对象)
{
IEnumerator枚举器=objects.GetEnumerator();
while(枚举数.MoveNext())
{
T object1=枚举数.Current;
if(枚举数.MoveNext())
{
产生返回元组.Create(object1,枚举器.Current);
}
}
}

您做了哪些尝试?他们怎么会不起作用?就像我说的,我自己还没有想出任何办法来实现这一点。我对LINQ扩展方法了如指掌,我一直在思考使用这些方法的方法。@Servy,我认为OP已经非常清楚地解释了他们目前为止在这个场合所做的尝试。1.他们可以手动创建元组;2.他们已经探索了扩展方法的想法,但并不知道如何用这种方式解决它。@DavidArno他特别说他一直在尝试创建一个实现,因此人们会认为如果他一直在尝试一些东西,他不会一无所获,因为如果是这样的话,那就意味着他实际上没有尝试过一些东西。他可能什么都没有,但他不会什么都没有。如果序列是奇数长度,这只会跳过最后一个元素(没有通过OP指定应该是什么行为),如果
objects==null,则会抛出NRE(即这与我开始编写的内容几乎相同,然后弹出你的答案)。在我看来,花点时间来解释它是如何工作的是值得的。@Mephy:你说得对,我相信OP可以根据需要进行调整,如果他知道在这些情况下他想做什么的话。@Mephy我确保只通过一个长度相等的集合。我只在这个场合需要它,如果我以后需要它,我会调整它:)