首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求1linq语句

2012-12-16 
求一linq语句有两列数据:var list1 new Liststring() { AA,BB,CC}var list2 new Liststring

求一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=""}

[其他解释]

            var list1 = new List<string>() { "AA", "BB", "CC" };
            var list2 = new List<string>() { "Q", "X", "V" };
            var vs = list1.Select((v, i) => new { v, value = list2[i] });
            foreach (var v in vs)
            {
                MessageBox.Show(v.v+":"+v.value);
            }

[其他解释]

easy..

   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
  select new {key=x.a,value=y.a};

[其他解释]

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

            var dicquery = from l1 in list1
                           from l2 in list2
                           where list1.IndexOf(l1) == list2.IndexOf(l2)


                           select new
                           {
                               key = l1 + "," + l2
                           };

            dicquery.ToList().ForEach(x => Console.WriteLine(x));


[其他解释]
再来一种

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

            var dicquery = from l1 in list1
                           from l2 in list2
                           where list1.IndexOf(l1) == list2.IndexOf(l2)
                           select new
                           {
                               key = l1,
                               Value = l2
                           };

            dicquery.ToList().ForEach(x => Console.WriteLine(x.key + " " + x.Value));

[其他解释]
谢谢各位 高手支招啦
[其他解释]
左连接最好了,如3楼,大好!

热点排行