日期:2014-05-20  浏览次数:21001 次

求一linq语句
有两列数据:
var list1 = new List<string>() { "AA","BB","CC"};
var list2 = new List<string>() { "Q", "X","V" };

他们之间没有任务联系,现在我要通过按顺序“一一对应”,它他们输出来,或者放到一个匿名类里面。
比如输出:
AA,Q
BB,X
CC,V

又或者
new { key="AA",Value="Q"}
new { key="BB",Value="X"}
new { key="CC",Value="V"}

请问如何写的linq呢?
------解决方案--------------------
当两个数组元素个数不同时,安全起见,最好这样:

   var result=from x in list1.Select((a,i)=>new {a,i})
              join y in list2.Select((a,i)=>new {a,i})
  on x.i equals y.i into t
  from y in t.DefaultIfEmpty()
  select new {key=x.a,value=y==null?"":y.a};

比如这种情况时:

var list1 = new List<string>() { "AA","BB",};
var list2 = new List<string>() { "Q"};

结果为:


new { key="AA",Value="Q"}
new { key="BB",Value=""}