拥有一个简单的模型:
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[]>
的集合。怎么解决这个问题?
答案 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 });