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

linq有关问题,集合中每个元素取若干个属性、将这些属性按原元素顺序返回

2013-08-16 
linq问题,集合中每个元素取若干个属性、将这些属性按原元素顺序返回测试代码如下using System.Collections.

linq问题,集合中每个元素取若干个属性、将这些属性按原元素顺序返回
测试代码如下


using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var lst = new List<dynamic>
                      {
                          new {value1 = 1, value2 = 2},
                          new {value1 = 3, value2 = 4},
                          new {value1 = 5, value2 = 6},
                      };

            //我想得到 1-6的序列
            var lst2 = lst.Select(v => v.value1).Union(lst.Select(v => v.value2));

            //上边这样顺序乱了,我也不想order因为本来是order好的。有没有这样一个方法:集合中每个元素取若干个属性,将这些属性加到结果集中返回的方法?
        }
    }
}

[解决办法]
此处如果用dynamic不好实现,因为不支持SelectMany操作。
void Main()
{
var lst = new List<myClass> {
  new myClass{value1 = 1, value2 = 2},
  new myClass{value1 = 3, value2 = 4},
  new myClass{value1 = 5, value2 = 6},


  };
var lst2 = lst.Select(v => string.Format("{0},{1}", v.value1, v.value2)).Union(lst.Select(v => string.Format("{0},{1}", v.value1, v.value2)));
lst2.SelectMany(x=>x.Split(',')).Dump();
}
class myClass
{
  public int value1{get;set;}
  public int value2{get;set;}
}


[解决办法]
var lst2 = lst.Select(v => new int[] { v.value1, v.value2 }).SelectMany(x => x);

热点排行