2015-07-06 1 views
0

У меня есть коллекция объектов. Я убедился, что у него есть даже количество объектов.Преобразование коллекции объектов в набор кортежей

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? 
} 
+1

Какие попытки вы сделали? Что с ними не работало? – Servy

+0

Как я уже сказал, я сам не понял, как я могу это достичь. Я знаю свой путь вокруг методов расширения LINQ, и я в первую очередь думал о том, как их использовать. – Spans

+1

@ Серви, я думаю, что ОП очень четко объяснил, что они пробовали до сих пор по этому поводу. 1. Они могут вручную создавать кортежи; 2. они исследовали идею методов расширения, но на самом деле не знают, как это решать. –

ответ

2

Возможно, что-то подобное?

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); 
     } 
    } 
    } 
+1

Это просто пропускает последний элемент, если последовательность имеет нечетную длину (не указано, какое поведение должно быть OP), и бросает NRE, если 'objects == null'. – Mephy

+0

Пятно на (т.е. это почти идентично тому, что я начал писать, а затем ваш ответ появился). Стоит расходовать ответ, чтобы объяснить, как он работает, хотя ИМО. –

+2

@Mephy: Вы правы, я уверен, что OP может при необходимости настроить, если он знает, что он хочет делать в этих случаях. – sstan

 Смежные вопросы

  • Нет связанных вопросов^_^