C# - 检查两组索引值

时间:2009-12-10 07:53:23

标签: c# linq

从两套

var set1 =new int[] { 1, 2, 3 };
var set2 =new int[] { 100, 200, 300 };

如何检查set1和set 2中元素的索引值? if set1的元素的索引值 等于set2元素的索引值,然后我希望那对像

{1,100} ,{2,200},{3,300}.

一些不完整的代码

var pairs=from n1 in set1 
          from n2 in (from num in set2 where ((num1,index)=> );

4 个答案:

答案 0 :(得分:2)

例如,你可以这样做:

var pairs=
  set1.Select((item, index) => new
  {
      n1= item, n2= set2[index]
  }).ToArray();

或者如果set2没有索引器,请按如下方式获取n2:

n2 = set2.Skip(index).Take(1).Single()

答案 1 :(得分:2)

这称为“zip”操作。您可以阅读更多相关信息in this earlier Stack Overflow post

答案 2 :(得分:1)

看看这个

int[] set1 = {1, 2, 3};
int[] set2 = {100, 200, 300};

var t = from i1 in set1
        from i2 in set2
        where Array.IndexOf(set1, i1) == Array.IndexOf(set2, i2)
        select new int[] { i1, i2 };

答案 3 :(得分:0)

我假设您只想加入这两个数组。我就是这样做的

var pairs=from n1 in set1  
          from n2 in set2
          select new
          {
               n1,
               n2
          }

这将返回两个组合。这假设两个集合都已经排序。