using System.Collections.Generic;
public static void Main()
PhoneNumbers[] num1 = new[]
new PhoneNumbers { Number = "2344432" },
new PhoneNumbers { Number = "4535345" },
new PhoneNumbers { Number = "456456" }
BillToContact btc1 = new BillToContact { CompanyName = "XYZ", Name = "ABC", PhoneNumbers = num1 };
PhoneNumbers[] num2 = new[]
new PhoneNumbers { Number = "453453455" },
new PhoneNumbers { Number = null },
new PhoneNumbers { Number = "25253456" }
BillToContact btc2 = new BillToContact { CompanyName = "TYU", Name = "JLK", PhoneNumbers = num2 };
PhoneNumbers[] num3 = new[]
new PhoneNumbers { Number = "12345" },
new PhoneNumbers { Number = null },
new PhoneNumbers { Number = "667654" }
BillToContact btc3 = new BillToContact { CompanyName = "LPA", Name = "YUE", PhoneNumbers = num3 };
List<Account> accounts = new List<Account>
new Account { Id = 1, Balance = 2000, AccountNumber = 1234, BillToContact = btc1 },
new Account { Id = 2, Balance = 5000, AccountNumber = 8954, BillToContact = btc2 },
new Account { Id = 3, Balance = 8000, AccountNumber = 7414, BillToContact = btc3 }
var FlatenedList = from x in accounts
AccountNumber = x.AccountNumber,
BillToCompanyName = x.BillToContact.CompanyName,
BillToName = x.BillToContact.Name,
BillToPhoneNumber1 = x.BillToContact.PhoneNumbers[0].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[0].Number),
BillToPhoneNumber2 = x.BillToContact.PhoneNumbers[1].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[1].Number),
BillToPhoneNumber3 = x.BillToContact.PhoneNumbers[2].Number == null ? String.Empty : (x.BillToContact.PhoneNumbers[2].Number),
var result = accounts.OrderBy(x => x.Id)
AccountNumber = x.AccountNumber,
BillToCompanyName = x.BillToContact.CompanyName,
BillToName = x.BillToContact.Name,
PhoneNumbersCount = x.BillToContact.PhoneNumbers.Count(),
PhoneNumbersList = x.BillToContact.PhoneNumbers
.Select(z => z.Number ?? String.Empty).ToList()
foreach (var item in result)
Console.WriteLine("AccountNumber: {0}", item.AccountNumber);
Console.WriteLine("Balance: {0}", item.Balance);
Console.WriteLine("BillToCompanyName: {0}", item.BillToCompanyName);
Console.WriteLine("BillToName: {0}", item.BillToName);
Console.WriteLine("PhoneNumbersCount: {0}", item.PhoneNumbersCount);
foreach (var number in item.PhoneNumbersList)
Console.WriteLine(String.IsNullOrEmpty(number) ? "Number not provided" : number);
public int Id { get; set; }
public int AccountNumber { get; set; }
public decimal Balance { get; set; }
public BillToContact BillToContact { get; set; }
public string Name { get; set; }
public string CompanyName { get; set; }
public PhoneNumbers[] PhoneNumbers{ get; set; }
public string Number { get; set; }