2015-10-20 3 views
0

я получаю мою коллекцию из базы данныхclosedXML вставка подколлекции

var exclCompany = companies.Select(u => new ExcelCompaniesViewModel 
{ 
    Id = u.Id, 
    IsEditedFirstTime = u.IsEditedFirstTime ? "Да" : "Нет", 
    IsLoggedFirstTime = u.IsLoggedFirstTime ? "Да" : "Нет", 
    Title = u.Title, 
    Description = u.Description, 
    Members = u.RmCompanyMembers.Select(p => new CompanyMemberViewModel 
    { 
     MemberDateLogin = "12/10/12", 
     MemberName = String.Format("{0} {1} {2}", p.LastName, p.FirstName, p.MiddleName), 
     TelephoneMemers = p.Phone 
    }).ToArray() 

}); 

и вставить в таблицу.

workSheet.Cell(2, 1).InsertData(exclCompany); 

Но в результате файл, клетки с членами отображается как:

System.Linq.Enumerable+WhereSelectEnumerableIterator 

Как вставить коллекции с подколлекций?

+0

Вы должны использовать '.ToArray()' в конце выбора? Можете ли вы '.ToList()' например? – ntohl

+0

System.Linq.Enumerable + WhereSelectEnumerableIterator - это тип exclCompany. Вы должны вызвать .ToArray() или .ToList(), чтобы фактически выполнить запрос LINQ и получить данные. – Greg

+0

Я считаю, что это называется. В конце 'u.RmCompanyMembers.Select (...). ToArray()' – ntohl

ответ

0

Если у Вас есть доступ, чтобы изменить код, чтобы использовать .ToList(), а не .ToArray(), чем Вы можете использовать это:

изменить тип членов к чему-то, что реализует интерфейс IList и переопределить метод ToString(). Таким образом, у вас будет свой способ визуализации массива. Например:

public class MembersCollection: IList<CompanyMemberViewModel> 
... 
    public override string ToString() 
    { 
     return string.Join(", ", this); 
    } 
} 

И, конечно же, не забудьте осуществить ToString() в CompanyMemberViewModel.