2014-07-03 4 views
1

Имея простую модель:Как создать массив из кратных свойств класса

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

Вы просто должны использовать SelectMany вместо Select:

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

Использование SelectMany после Select:

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

Изменить Выберите для SelectMany:

var modifiedHeaders = myCollection 
    .SelectMany(item => new[] { item.CON_DESCRIPCION, "Total", "Date", item.prop2 }); 
Смежные вопросы