读书人

linq有关问题集合中每个元素取若干个

发布时间: 2013-08-16 14:29:57 作者: rapoo

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);

读书人网 >C#

热点推荐