如何从类的多个属性生成数组

时间:2014-07-03 16:35:08

标签: c# linq linq-to-objects

拥有一个简单的模型:

public class SimpleClass
{
    public string prop1 { get; set; }
    public string prop2 { get; set;}
}

还有一个系列:

List<SimpleClass> myCollection = new List<SimpleClass>();

我想做以下事情:

var headerCollection = new List<string>();

foreach(var item in myCollection)
{
    headerCollection.add(item.prop1);
    headerCollection.add("Total");
    headerCollection.add("Date");
    //...
    headerCollection.add(item.prop2);
}

但我需要将linq用于对象。

我试过了:

var modifiedHeaders = myCollection
    .Select(item => new[] { item.CON_DESCRIPCION, "Total", "Date", item.prop2 });

但它会生成一个类型为List<string[]>的集合。怎么解决这个问题?

3 个答案:

答案 0 :(得分:3)

您只需使用SelectMany代替Select

var mh = myCollection.SelectMany(i =>
    new[] { i.CON_DESCRIPTION, "Total", "Date", i.prop2 });

答案 1 :(得分:1)

SelectMany之后使用Select

var modifiedHeaders = myCollection
       .Select(item => new[] { item.CON_DESCRIPCION, "Total", "Date", item.prop2 })
       .SelectMany(x => x);

答案 2 :(得分:0)

更改选择选择多个:

var modifiedHeaders = myCollection
    .SelectMany(item => new[] { item.CON_DESCRIPCION, "Total", "Date", item.prop2 });