Linq to Objects - вернуть пары чисел из списка номеров - PullRequest
12 голосов
/ 16 декабря 2010
var nums = new[]{ 1, 2, 3, 4, 5, 6, 7};
var pairs  = /* some linq magic here*/ ;

=> пары = {{1, 2}, {3, 4}, {5, 6}, {7, 0}}

Элементы pairs должны быть либодвухэлементные списки или экземпляры некоторого анонимного класса с двумя полями, например, new {First = 1, Second = 2}.

Ответы [ 12 ]

0 голосов
/ 16 декабря 2010

это дает все возможные пары (vb.net):

Dim nums() = {1, 2, 3, 4, 5, 6, 7}
Dim pairs = From a In nums, b In nums Where a <> b Select a, b

Edit:

 Dim allpairs = From a In nums, b In nums Where b - a = 1 Select a, b
 Dim uniquePairs = From p In allpairs Where p.a Mod 2 <> 0 Select p

примечание: последняя пара отсутствует, работает над ней

Edit:

объединение uniquePairs с парой {nums.Last,0}

0 голосов
/ 16 декабря 2010
 var nums = new float[] { 1, 2, 3, 4, 5, 6, 7 };
 var enumerable = 
        Enumerable
          .Range(0, nums.Length)
          .Where(i => i % 2 == 0)
          .Select(i => 
             new { F = nums[i], S = i == nums.Length - 1 ? 0 : nums[i + 1] });
...