James Andrew Smith
James Andrew Smith

Reputation: 1566

conditions in linq query

I have a linq query that gets all data from customers and customer contacts. But sometimes i don't want all contacts so i would like to specify a condition that if this value equals get contacts then run the query. Similar too..

switch (options)
{
    case CustomerOptions.DefaultContacts:
    break;
}

I currently have this linq query

var customersToReturn = new ContentList<CustomerServiceModel>()
{
    Total = customers.Total,
    List = customers.List.Select(c => new CustomerServiceModel
    {
        Id = c.Id,
        ContractorId = c.ContractorId,
        CompanyName = c.CompanyName,
        Active = c.Active,
        Address = new Address
        {
            Address1 = c.Address1,
            Address2 = c.Address2,
            Address3 = c.Address3,
            Address4 = c.Address4,
        },
        CustomerContacts = c.CustomersContacts.Select(a => new ContactServiceModel
        {
            Name = a.Name,
            Telephone = a.Telephone      
        }).Where(e => e.IsDefault)
    }).ToList()
};

Is there a way I can set a condition or do I need to repeat the process twice one just for customers and one for customers and customer contacts?

Upvotes: 1

Views: 83

Answers (1)

Tarec
Tarec

Reputation: 3255

If I understand it right, you want some of CustomServiceModel objects to have CustomerContacts, while others to have not? Then I'd do it like that

List = customers.List.Select(c => new CustomerServiceModel
                        {
                            Id = c.Id,
                            ContractorId = c.ContractorId,
                            CompanyName = c.CompanyName,
                            Active = c.Active,
                            Address = new Address
                            {
                                Address1 = c.Address1,
                                Address2 = c.Address2,
                                Address3 = c.Address3,
                                Address4 = c.Address4,
                            },
                            CustomerContacts = condition ?
                                c.CustomersContacts.Select(a => new ContactServiceModel
                                {
                                    Name = a.Name,
                                    Telephone = a.Telephone      
                                }).Where(e => e.IsDefault)
                                :null
                        }).ToList()

If you need to use switch, create yourself a method that returns bool and put it instead of condition phrase in above example.

Upvotes: 1

Related Questions